mirror of
https://github.com/LucasDower/ObjToSchematic.git
synced 2025-03-07 14:06:41 +08:00
Minor changes to grid rendering
This commit is contained in:
parent
8b23996c93
commit
eea08adf16
@ -2,7 +2,7 @@ import * as twgl from 'twgl.js';
|
||||
import { Triangle, UVTriangle } from './triangle';
|
||||
import { Vector3 } from './vector';
|
||||
import { AttributeData, MergeAttributeData, RenderBuffer } from './buffer';
|
||||
import { Bounds, RGB } from './util';
|
||||
import { ASSERT, Bounds, RGB } from './util';
|
||||
import { Mesh } from './mesh';
|
||||
import { VoxelMesh } from './voxel_mesh';
|
||||
|
||||
@ -219,69 +219,53 @@ export class DebugGeometryTemplates {
|
||||
return MergeAttributeData(line, cone);
|
||||
}
|
||||
|
||||
public static grid(axes: boolean, bounds: boolean, gridLines: boolean, gridSize: number, xOffset: boolean = true, zOffset: boolean = true): RenderBuffer {
|
||||
public static grid(dimensions: Vector3, spacing?: number): RenderBuffer {
|
||||
const buffer = new RenderBuffer([
|
||||
{ name: 'position', numComponents: 3 },
|
||||
{ name: 'colour', numComponents: 3 },
|
||||
]);
|
||||
const COLOUR_MINOR = new RGB(0.15, 0.15, 0.15);
|
||||
const COLOUR_MAJOR = new RGB(0.3, 0.3, 0.3);
|
||||
|
||||
const gridRadius = 9.5;
|
||||
const gridColourMinor = new RGB(0.15, 0.15, 0.15);
|
||||
const gridColourMajor = new RGB(0.3, 0.3, 0.3);
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(-dimensions.x / 2, 0, -dimensions.z / 2),
|
||||
new Vector3(-dimensions.x / 2, 0, dimensions.z / 2),
|
||||
COLOUR_MAJOR,
|
||||
));
|
||||
|
||||
if (bounds) {
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(-gridRadius, 0, -gridRadius),
|
||||
new Vector3(gridRadius, 0, -gridRadius),
|
||||
gridColourMajor,
|
||||
));
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(gridRadius, 0, -gridRadius),
|
||||
new Vector3(gridRadius, 0, gridRadius),
|
||||
gridColourMajor,
|
||||
));
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(gridRadius, 0, gridRadius),
|
||||
new Vector3(-gridRadius, 0, gridRadius),
|
||||
gridColourMajor,
|
||||
));
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(-gridRadius, 0, gridRadius),
|
||||
new Vector3(-gridRadius, 0, -gridRadius),
|
||||
gridColourMajor,
|
||||
));
|
||||
}
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(dimensions.x / 2, 0, -dimensions.z / 2),
|
||||
new Vector3(dimensions.x / 2, 0, dimensions.z / 2),
|
||||
COLOUR_MAJOR,
|
||||
));
|
||||
|
||||
if (gridLines) {
|
||||
// X
|
||||
for (let i = (xOffset ? gridSize/2 : 0.0); i < gridRadius; i += gridSize) {
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(-dimensions.x / 2, 0, -dimensions.z / 2),
|
||||
new Vector3(dimensions.x / 2, 0, -dimensions.z / 2),
|
||||
COLOUR_MAJOR,
|
||||
));
|
||||
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(-dimensions.x / 2, 0, dimensions.z / 2),
|
||||
new Vector3(dimensions.x / 2, 0, dimensions.z / 2),
|
||||
COLOUR_MAJOR,
|
||||
));
|
||||
|
||||
if (spacing) {
|
||||
ASSERT(spacing > 0.0);
|
||||
for (let x = -dimensions.x / 2; x < dimensions.x / 2; x += spacing) {
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(i, 0, gridRadius),
|
||||
new Vector3(i, 0, -gridRadius),
|
||||
gridColourMinor,
|
||||
));
|
||||
}
|
||||
for (let i = (xOffset ? gridSize/2 : 0.0); i > -gridRadius; i -= gridSize) {
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(i, 0, gridRadius),
|
||||
new Vector3(i, 0, -gridRadius),
|
||||
gridColourMinor,
|
||||
new Vector3(x, 0, -dimensions.z / 2),
|
||||
new Vector3(x, 0, dimensions.z / 2),
|
||||
COLOUR_MINOR,
|
||||
));
|
||||
}
|
||||
|
||||
// Z
|
||||
for (let i = (zOffset ? gridSize/2 : 0.0); i < gridRadius; i += gridSize) {
|
||||
for (let z = -dimensions.z / 2; z < dimensions.z / 2; z += spacing) {
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(gridRadius, 0, i),
|
||||
new Vector3(-gridRadius, 0, i),
|
||||
gridColourMinor,
|
||||
));
|
||||
}
|
||||
for (let i = (zOffset ? gridSize/2 : 0.0); i > -gridRadius; i -= gridSize) {
|
||||
buffer.add(DebugGeometryTemplates.line(
|
||||
new Vector3(gridRadius, 0, i),
|
||||
new Vector3(-gridRadius, 0, i),
|
||||
gridColourMinor,
|
||||
new Vector3(-dimensions.x / 2, 0, z),
|
||||
new Vector3(dimensions.x / 2, 0, z),
|
||||
COLOUR_MINOR,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@ -75,7 +75,6 @@ export class Renderer {
|
||||
this._debugBuffers[MeshType.TriangleMesh] = {};
|
||||
this._debugBuffers[MeshType.VoxelMesh] = {};
|
||||
this._debugBuffers[MeshType.BlockMesh] = {};
|
||||
this._debugBuffers[MeshType.None][EDebugBufferComponents.Grid] = DebugGeometryTemplates.grid(true, true, false, 0.25);
|
||||
|
||||
this._isGridComponentEnabled = {};
|
||||
this._isGridComponentEnabled[EDebugBufferComponents.Grid] = false;
|
||||
@ -188,7 +187,8 @@ export class Renderer {
|
||||
}
|
||||
}
|
||||
|
||||
this._debugBuffers[MeshType.TriangleMesh][EDebugBufferComponents.Grid] = DebugGeometryTemplates.grid(true, true, false, 0.25);
|
||||
const dimensions = mesh.getBounds().getDimensions();
|
||||
this._debugBuffers[MeshType.TriangleMesh][EDebugBufferComponents.Grid] = DebugGeometryTemplates.grid(dimensions);
|
||||
this._debugBuffers[MeshType.TriangleMesh][EDebugBufferComponents.Wireframe] = DebugGeometryTemplates.meshWireframe(mesh, new RGB(0.18, 0.52, 0.89));
|
||||
this._debugBuffers[MeshType.TriangleMesh][EDebugBufferComponents.Normals] = DebugGeometryTemplates.meshNormals(mesh, new RGB(0.89, 0.52, 0.18));
|
||||
delete this._debugBuffers[MeshType.TriangleMesh][EDebugBufferComponents.Dev];
|
||||
@ -216,8 +216,9 @@ export class Renderer {
|
||||
dimensions.y % 2 === 0 ? 0 : -0.5,
|
||||
dimensions.z % 2 === 0 ? 0 : -0.5,
|
||||
);
|
||||
dimensions.add(1);
|
||||
|
||||
this._debugBuffers[MeshType.VoxelMesh][EDebugBufferComponents.Grid] = DebugGeometryTemplates.grid(true, true, true, this._voxelSize, this._gridOffset.x === 0, this._gridOffset.z === 0);
|
||||
this._debugBuffers[MeshType.VoxelMesh][EDebugBufferComponents.Grid] = DebugGeometryTemplates.grid(Vector3.mulScalar(dimensions, voxelSize), voxelSize);
|
||||
this._debugBuffers[MeshType.VoxelMesh][EDebugBufferComponents.Wireframe] = DebugGeometryTemplates.voxelMeshWireframe(voxelMesh, new RGB(0.18, 0.52, 0.89), this._voxelSize);
|
||||
|
||||
this._modelsAvailable = 2;
|
||||
@ -238,7 +239,7 @@ export class Renderer {
|
||||
mag: this._gl.NEAREST,
|
||||
});
|
||||
|
||||
this._debugBuffers[MeshType.BlockMesh][EDebugBufferComponents.Grid] = DebugGeometryTemplates.grid(true, true, true, this._voxelSize, this._gridOffset.x === 0, this._gridOffset.z === 0);
|
||||
this._debugBuffers[MeshType.BlockMesh][EDebugBufferComponents.Grid] = this._debugBuffers[MeshType.VoxelMesh][EDebugBufferComponents.Grid];
|
||||
|
||||
this._modelsAvailable = 3;
|
||||
this.setModelToUse(MeshType.BlockMesh);
|
||||
@ -363,4 +364,8 @@ export class Renderer {
|
||||
public getModelsAvailable() {
|
||||
return this._modelsAvailable;
|
||||
}
|
||||
|
||||
public getActiveMeshType() {
|
||||
return this._meshToUse;
|
||||
}
|
||||
}
|
||||
|
@ -179,6 +179,8 @@ export class UI {
|
||||
}, EAppEvent.onGridEnabledChanged, (...args: any[]) => {
|
||||
const isEnabled = args[0][0][0] as boolean;
|
||||
return isEnabled;
|
||||
}, EAppEvent.onModelActiveChanged, (...args: any[]) => {
|
||||
return Renderer.Get.getActiveMeshType() !== MeshType.None;
|
||||
}),
|
||||
'axes': new ToolbarItemElement('axes', () => {
|
||||
Renderer.Get.toggleIsAxesEnabled();
|
||||
|
Loading…
Reference in New Issue
Block a user