diff --git a/src/UI/Components/ToolBar/ModifyModel/ModifyModelStore.ts b/src/UI/Components/ToolBar/ModifyModel/ModifyModelStore.ts index 5e93b01e5..9db07b00d 100644 --- a/src/UI/Components/ToolBar/ModifyModel/ModifyModelStore.ts +++ b/src/UI/Components/ToolBar/ModifyModel/ModifyModelStore.ts @@ -198,6 +198,43 @@ export default class ModifyModelStore ent.Position = p; app.Viewer.UpdateRender(); }; + UpdatePosition = async (ents: Entity[], move: number, axis: ModuleAxis) => + { + if (!ents) return; + let m = new Matrix4; + for (let ent of ents) + { + switch (axis) + { + case (ModuleAxis.x): + { + m.setPosition(new Vector3(move, 0, 0)); + ent.ApplyMatrix(m); + break; + } + case (ModuleAxis.y): + { + m.setPosition(new Vector3(0, move, 0)); + ent.ApplyMatrix(m); + break; + } + case (ModuleAxis.z): + { + m.setPosition(new Vector3(0, 0, move)); + ent.ApplyMatrix(m); + break; + } + default: + AppToaster.show({ + message: "出错啦!", + timeout: 5000, + intent: Intent.DANGER, + }); + break; + } + app.Viewer.UpdateRender(); + } + }; UpdateModuleRotate = (ent: Entity, x: number, y: number, z: number) => { let eu = new Euler(x * MathUtils.DEG2RAD, y * MathUtils.DEG2RAD, z * MathUtils.DEG2RAD, 'ZYX'); diff --git a/src/UI/Components/ToolBar/ModifyModel/ModuleBaseParams.tsx b/src/UI/Components/ToolBar/ModifyModel/ModuleBaseParams.tsx index d823f2f4f..c45fac2d7 100644 --- a/src/UI/Components/ToolBar/ModifyModel/ModuleBaseParams.tsx +++ b/src/UI/Components/ToolBar/ModifyModel/ModuleBaseParams.tsx @@ -205,10 +205,62 @@ export default class ModuleBaseParams extends Component<{}, {}> targetEl.onmousemove = null; }; }; + ChangeRotate = async (e: number, ModifyModelStore: ModifyModelStore, axis: ModuleAxis) => + { + if (!app.Editor.SelectCtrl.SelectSet.SelectEntityList.length) return; + const Command_KEY = '修改模型角度'; + if (CommandState.CommandIng) + { + await app.Editor.ModalManage.EndExecingCmd(); + if (CommandState.CommandIng) + { + AppToaster.show({ + message: "命令正在执行中!无法修改模型角度!", + timeout: 5000, + intent: Intent.DANGER, + }); + return; + } + commandMachine.CommandStart(Command_KEY); + } else + { + commandMachine.CommandStart(Command_KEY); + } + + switch (axis) + { + case ModuleAxis.x: { + ModifyModelStore.rotateX = e; + break; + } + case ModuleAxis.y: { + ModifyModelStore.rotateY = e; + break; + } + case ModuleAxis.z: { + ModifyModelStore.rotateZ = e; + break; + } + default: + break; + } + for (let e of app.Editor.SelectCtrl.SelectSet.SelectEntityList) + { + ModifyModelStore.UpdateModuleRotate(e, + ModifyModelStore.rotateX, + ModifyModelStore.rotateY, + ModifyModelStore.rotateZ + ); + } + if (CommandState.CommandIng && app.Database.hm.UndoData.CommandName === Command_KEY) + { + commandMachine.CommandEnd(); + } + }; ChangePosition = async (e: string, axis: ModuleAxis) => { if (!app.Editor.SelectCtrl.SelectSet.SelectEntityList.length) return; - const ent = app.Editor.SelectCtrl.SelectSet.SelectEntityList[0]; + let ents = app.Editor.SelectCtrl.SelectSet.SelectEntityList; const Command_KEY = '修改模型位置'; if (CommandState.CommandIng) { @@ -234,21 +286,25 @@ export default class ModuleBaseParams extends Component<{}, {}> { v = 0; } + let move: number; switch (axis) { case ModuleAxis.x: { + move = v - ModifyModelStore.positionX; ModifyModelStore.positionX = v; - ModifyModelStore.UpdateModulePosition(ent, ModifyModelStore.positionX, ModuleAxis.x); + ModifyModelStore.UpdatePosition(ents, move, ModuleAxis.x); break; } case ModuleAxis.y: { + move = v - ModifyModelStore.positionY; ModifyModelStore.positionY = v; - ModifyModelStore.UpdateModulePosition(ent, ModifyModelStore.positionY, ModuleAxis.y); + ModifyModelStore.UpdatePosition(ents, move, ModuleAxis.y); break; } case ModuleAxis.z: { + move = v - ModifyModelStore.positionZ; ModifyModelStore.positionZ = v; - ModifyModelStore.UpdateModulePosition(ent, ModifyModelStore.positionZ, ModuleAxis.z); + ModifyModelStore.UpdatePosition(ents, move, ModuleAxis.z); break; } default: @@ -561,7 +617,7 @@ export default class ModuleBaseParams extends Component<{}, {}> }} />
-
+
位置
this.ChangePosition(e.target.value, ModuleAxis.x); }} onPointerDown={(e) => { this.LetsMove(e, ModuleAxis.x); }} + onKeyDown={(e: React.KeyboardEvent) => + { + e.stopPropagation(); + }} />
@@ -581,6 +641,10 @@ export default class ModuleBaseParams extends Component<{}, {}> this.ChangePosition(e.target.value, ModuleAxis.y); }} onPointerDown={(e) => { this.LetsMove(e, ModuleAxis.y); }} + onKeyDown={(e: React.KeyboardEvent) => + { + e.stopPropagation(); + }} />
@@ -591,11 +655,12 @@ export default class ModuleBaseParams extends Component<{}, {}> this.ChangePosition(e.target.value, ModuleAxis.z); }} onPointerDown={(e) => { this.LetsMove(e, ModuleAxis.z); }} + onKeyDown={(e: React.KeyboardEvent) => + { + e.stopPropagation(); + }} />
- -
@@ -611,13 +676,20 @@ export default class ModuleBaseParams extends Component<{}, {}>
{ - ModifyModelStore.rotateX = e; - }} /> + if (isNaN(e) || e < 0 || e > 360) return; + this.ChangeRotate(e, ModifyModelStore, ModuleAxis.x); + }} + onKeyDown={(e: React.KeyboardEvent) => + { + e.stopPropagation(); + }} + />
@@ -630,13 +702,20 @@ export default class ModuleBaseParams extends Component<{}, {}>
{ - ModifyModelStore.rotateY = e; - }} /> + if (isNaN(e) || e < 0 || e > 360) return; + this.ChangeRotate(e, ModifyModelStore, ModuleAxis.y); + }} + onKeyDown={(e: React.KeyboardEvent) => + { + e.stopPropagation(); + }} + />
@@ -649,17 +728,55 @@ export default class ModuleBaseParams extends Component<{}, {}>
{ - ModifyModelStore.rotateZ = e; - }} /> + if (isNaN(e) || e < 0 || e > 360) return; + this.ChangeRotate(e, ModifyModelStore, ModuleAxis.z); + }} + onKeyDown={(e: React.KeyboardEvent) => + { + e.stopPropagation(); + }} + /> -