diff --git a/res/static/axes.svg b/res/static/axes.svg new file mode 100644 index 0000000..4df7b0e --- /dev/null +++ b/res/static/axes.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/app_context.ts b/src/app_context.ts index 332d742..90f93e2 100644 --- a/src/app_context.ts +++ b/src/app_context.ts @@ -84,6 +84,7 @@ export class AppContext { this._ui.disable(EAction.Simplify); Renderer.Get.toggleIsGridEnabled(); + Renderer.Get.toggleIsAxesEnabled(); } public do(action: EAction) { diff --git a/src/event.ts b/src/event.ts index aa3761b..0f1423b 100644 --- a/src/event.ts +++ b/src/event.ts @@ -5,6 +5,7 @@ export enum EAppEvent { onModelActiveChanged, onModelAvailableChanged, onGridEnabledChanged, + onAxesEnabledChanged, onWireframeEnabledChanged, onNormalsEnabledChanged, onDevViewEnabledChanged, diff --git a/src/renderer.ts b/src/renderer.ts index 7f8d14d..b3f8fb8 100644 --- a/src/renderer.ts +++ b/src/renderer.ts @@ -36,7 +36,6 @@ export class Renderer { private _backgroundColour = new RGB(0.125, 0.125, 0.125); private _atlasTexture?: WebGLTexture; - private _occlusionNeighboursIndices!: Array>>; // Ew private _meshToUse: MeshType = MeshType.None; private _voxelSize: number = 1.0; @@ -55,6 +54,7 @@ export class Renderer { private _axisBuffer: RenderBuffer; private _isGridComponentEnabled: { [bufferComponent: string]: boolean }; + private _axesEnabled: boolean; private static _instance: Renderer; public static get Get() { @@ -79,6 +79,7 @@ export class Renderer { this._isGridComponentEnabled = {}; this._isGridComponentEnabled[EDebugBufferComponents.Grid] = false; + this._axesEnabled = false; this._axisBuffer = new RenderBuffer([ { name: 'position', numComponents: 3 }, @@ -119,6 +120,11 @@ export class Renderer { EventManager.Get.broadcast(EAppEvent.onGridEnabledChanged, isEnabled); } + public toggleIsAxesEnabled() { + this._axesEnabled = !this._axesEnabled; + EventManager.Get.broadcast(EAppEvent.onAxesEnabledChanged, this._axesEnabled); + } + public toggleIsWireframeEnabled() { const isEnabled = !this._isGridComponentEnabled[EDebugBufferComponents.Wireframe]; this._isGridComponentEnabled[EDebugBufferComponents.Wireframe] = isEnabled; @@ -260,11 +266,13 @@ export class Renderer { } } // Draw axis - this._gl.disable(this._gl.DEPTH_TEST); - this._drawBuffer(this._gl.LINES, this._axisBuffer.getWebGLBuffer(), ShaderManager.Get.debugProgram, { - u_worldViewProjection: ArcballCamera.Get.getWorldViewProjection(), - }); - this._gl.enable(this._gl.DEPTH_TEST); + if (this._axesEnabled) { + this._gl.disable(this._gl.DEPTH_TEST); + this._drawBuffer(this._gl.LINES, this._axisBuffer.getWebGLBuffer(), ShaderManager.Get.debugProgram, { + u_worldViewProjection: ArcballCamera.Get.getWorldViewProjection(), + }); + this._gl.enable(this._gl.DEPTH_TEST); + } } private _drawMesh() { diff --git a/src/ui/layout.ts b/src/ui/layout.ts index 9164234..eef55f5 100644 --- a/src/ui/layout.ts +++ b/src/ui/layout.ts @@ -180,8 +180,14 @@ export class UI { const isEnabled = args[0][0][0] as boolean; return isEnabled; }), + 'axes': new ToolbarItemElement('axes', () => { + Renderer.Get.toggleIsAxesEnabled(); + }, EAppEvent.onAxesEnabledChanged, (...args: any[]) => { + const isEnabled = args[0][0][0] as boolean; + return isEnabled; + }), }, - elementsOrder: ['grid'], + elementsOrder: ['grid', 'axes'], }, }, groupsOrder: ['viewmode', 'zoom', 'debug'],