From be8306141fc6352835e9f566cc6ee786a838e7a0 Mon Sep 17 00:00:00 2001 From: Michael Mainguy Date: Tue, 22 Aug 2023 16:28:45 -0500 Subject: [PATCH] Fixed up color selector. --- src/diagram/diagramManager.ts | 3 +++ src/menus/editMenu.ts | 3 +++ src/toolbox/toolbox.ts | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/src/diagram/diagramManager.ts b/src/diagram/diagramManager.ts index af45e61..c020bb2 100644 --- a/src/diagram/diagramManager.ts +++ b/src/diagram/diagramManager.ts @@ -51,6 +51,9 @@ export class DiagramManager { if (this.onDiagramEventObservable.hasObservers()) { this.logger.warn("onDiagramEventObservable already has Observers, you should be careful"); } + this.toolbox.colorChangeObservable.add((evt) => { + this.persistenceManager.changeColor(Color3.FromHexString(evt.oldColor), Color3.FromHexString(evt.newColor)); + }, -1, true, this, false); this.onDiagramEventObservable.add(this.onDiagramEvent, -1, true, this); this.logger.debug("DiagramManager constructed"); scene.onMeshRemovedObservable.add((mesh) => { diff --git a/src/menus/editMenu.ts b/src/menus/editMenu.ts index 142e23e..c796885 100644 --- a/src/menus/editMenu.ts +++ b/src/menus/editMenu.ts @@ -174,6 +174,9 @@ export class EditMenu { const template = mesh.metadata.template; const newBase = this.getTool(template, Color3.FromHexString(this.paintColor)); + if (!newBase) { + return; + } const newMesh = (mesh as InstancedMesh).clone(mesh.name, mesh.parent, false, newBase); newMesh.id = mesh.id; newMesh.physicsBody = mesh.physicsBody; diff --git a/src/toolbox/toolbox.ts b/src/toolbox/toolbox.ts index 4e99663..68023df 100644 --- a/src/toolbox/toolbox.ts +++ b/src/toolbox/toolbox.ts @@ -4,6 +4,7 @@ import { InstancedMesh, Mesh, MeshBuilder, + Observable, Scene, StandardMaterial, TransformNode, @@ -33,6 +34,8 @@ export class Toolbox { private readonly addPanel: StackPanel3D; private readonly controllers: Controllers; private xObserver; + public readonly colorChangeObservable: Observable<{ oldColor: string, newColor: string }> = + new Observable<{ oldColor: string; newColor: string }>() constructor(scene: Scene, controllers: Controllers) { this.scene = scene; @@ -212,6 +215,10 @@ export class Toolbox { material.name = "material-" + newColorHex; mesh.id = "toolbox-color-" + newColorHex; mesh.name = "toolbox-color-" + newColorHex; + this.colorChangeObservable.notifyObservers({ + oldColor: oldColor.toHexString(), + newColor: newColor.toHexString() + }); }); colorPickerTexture.addControl(colorPicker);