|
@@ -12,6 +12,8 @@ import * as React from "react";
|
|
|
|
|
|
import { GlobalState } from "../../globalState";
|
|
|
import { UtilityLayerRenderer } from "babylonjs/Rendering/utilityLayerRenderer";
|
|
|
+import { PropertyChangedEvent } from '../../../components/propertyChangedEvent';
|
|
|
+import { LightGizmo } from 'babylonjs/Gizmos/lightGizmo';
|
|
|
|
|
|
interface ISceneTreeItemComponentProps {
|
|
|
scene: Scene;
|
|
@@ -28,6 +30,10 @@ export class SceneTreeItemComponent extends React.Component<ISceneTreeItemCompon
|
|
|
private _onSelectionChangeObserver: Nullable<Observer<any>>;
|
|
|
private _selectedEntity: any;
|
|
|
|
|
|
+ private _posDragEnd: Nullable<Observer<PropertyChangedEvent>> = null;
|
|
|
+ private _scaleDragEnd: Nullable<Observer<PropertyChangedEvent>> = null;
|
|
|
+ private _rotateDragEnd: Nullable<Observer<PropertyChangedEvent>> = null;
|
|
|
+
|
|
|
constructor(props: ISceneTreeItemComponentProps) {
|
|
|
super(props);
|
|
|
|
|
@@ -203,12 +209,78 @@ export class SceneTreeItemComponent extends React.Component<ISceneTreeItemCompon
|
|
|
switch (mode) {
|
|
|
case 1:
|
|
|
manager.positionGizmoEnabled = true;
|
|
|
+ if(!this._posDragEnd){
|
|
|
+ // Record movement for generating replay code
|
|
|
+ this._posDragEnd = manager.gizmos.positionGizmo!.onDragEndObservable.add(()=>{
|
|
|
+ if (manager.gizmos.positionGizmo && manager.gizmos.positionGizmo.attachedMesh) {
|
|
|
+ var lightGizmo:Nullable<LightGizmo> = manager.gizmos.positionGizmo.attachedMesh.reservedDataStore.lightGizmo;
|
|
|
+ var obj:any = (lightGizmo && lightGizmo.light) ? lightGizmo.light : manager.gizmos.positionGizmo.attachedMesh;
|
|
|
+
|
|
|
+ if (obj.position) {
|
|
|
+ var e = new PropertyChangedEvent();
|
|
|
+ e.object = obj
|
|
|
+ e.property = "position"
|
|
|
+ e.value = obj.position;
|
|
|
+ this.props.globalState.onPropertyChangedObservable.notifyObservers(e)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
break;
|
|
|
case 2:
|
|
|
manager.rotationGizmoEnabled = true;
|
|
|
+ if(!this._rotateDragEnd){
|
|
|
+ // Record movement for generating replay code
|
|
|
+ this._rotateDragEnd = manager.gizmos.rotationGizmo!.onDragEndObservable.add(()=>{
|
|
|
+ if (manager.gizmos.rotationGizmo && manager.gizmos.rotationGizmo.attachedMesh) {
|
|
|
+ var lightGizmo:Nullable<LightGizmo> = manager.gizmos.rotationGizmo.attachedMesh.reservedDataStore.lightGizmo;
|
|
|
+ var obj:any = (lightGizmo && lightGizmo.light) ? lightGizmo.light : manager.gizmos.rotationGizmo.attachedMesh;
|
|
|
+
|
|
|
+ if (obj.rotationQuaternion) {
|
|
|
+ var e = new PropertyChangedEvent();
|
|
|
+ e.object = obj;
|
|
|
+ e.property = "rotationQuaternion";
|
|
|
+ e.value = obj.rotationQuaternion;
|
|
|
+ this.props.globalState.onPropertyChangedObservable.notifyObservers(e);
|
|
|
+ } else if(obj.rotation) {
|
|
|
+ var e = new PropertyChangedEvent();
|
|
|
+ e.object = obj;
|
|
|
+ e.property = "rotation";
|
|
|
+ e.value = obj.rotation;
|
|
|
+ this.props.globalState.onPropertyChangedObservable.notifyObservers(e);
|
|
|
+ } else if(obj.direction) {
|
|
|
+ var e = new PropertyChangedEvent();
|
|
|
+ e.object = obj;
|
|
|
+ e.property = "direction";
|
|
|
+ e.value = obj.direction;
|
|
|
+ this.props.globalState.onPropertyChangedObservable.notifyObservers(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
break;
|
|
|
case 3:
|
|
|
manager.scaleGizmoEnabled = true;
|
|
|
+ if(!this._scaleDragEnd){
|
|
|
+ // Record movement for generating replay code
|
|
|
+ this._scaleDragEnd = manager.gizmos.scaleGizmo!.onDragEndObservable.add(()=>{
|
|
|
+ if (manager.gizmos.scaleGizmo && manager.gizmos.scaleGizmo.attachedMesh) {
|
|
|
+ var lightGizmo:Nullable<LightGizmo> = manager.gizmos.scaleGizmo.attachedMesh.reservedDataStore.lightGizmo;
|
|
|
+ var obj:any = (lightGizmo && lightGizmo.light) ? lightGizmo.light : manager.gizmos.scaleGizmo.attachedMesh;
|
|
|
+
|
|
|
+ if (obj.scaling) {
|
|
|
+ var e = new PropertyChangedEvent();
|
|
|
+ e.object = obj;
|
|
|
+ e.property = "scaling";
|
|
|
+ e.value = obj.scaling;
|
|
|
+ this.props.globalState.onPropertyChangedObservable.notifyObservers(e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
break;
|
|
|
case 4:
|
|
|
manager.boundingBoxGizmoEnabled = true;
|