将Undo,Redo改成透明命令

pull/575/head
ChenX 5 years ago
parent 7181ebcb46
commit a74296b29e

@ -4,6 +4,7 @@ import { Command } from '../Editor/CommandMachine';
export class Undo implements Command export class Undo implements Command
{ {
NoHistory = true; NoHistory = true;
Transparency = true;
async exec() async exec()
{ {
app.Database.hm.Undo(); app.Database.hm.Undo();
@ -14,6 +15,7 @@ export class Undo implements Command
export class Redo implements Command export class Redo implements Command
{ {
NoHistory = true; NoHistory = true;
Transparency = true;
async exec() async exec()
{ {
app.Database.hm.Redo(); app.Database.hm.Redo();

@ -6,6 +6,7 @@ import { Orbit } from "../Geometry/Orbit";
export class ViewChange implements Command export class ViewChange implements Command
{ {
NoHistory = true; NoHistory = true;
Transparency = true;
constructor(private viewDir: Vector3, private useWCS = false) constructor(private viewDir: Vector3, private useWCS = false)
{ {
viewDir.normalize(); viewDir.normalize();

@ -11,6 +11,8 @@ export interface Command
* ,, * ,,
*/ */
NoHistory?: boolean; NoHistory?: boolean;
//透明命令,透明命令没有历史记录,也不占用命令状态,也无视命令状态.
Transparency?: boolean;
exec: Function;//函数可以返回true,实现放弃命令的任何操作. exec: Function;//函数可以返回true,实现放弃命令的任何操作.
} }
@ -31,6 +33,13 @@ class CommandMachine
app.Editor.CommandStore.historyCmdList.push(cmdName); app.Editor.CommandStore.historyCmdList.push(cmdName);
let cmd = this.CommandMap.get(cmdName); let cmd = this.CommandMap.get(cmdName);
if (cmd.Transparency)
{
await cmd.exec();
app.Editor.UpdateScreen();
return;
}
this.CommandStart(cmdName, cmd.NoHistory); this.CommandStart(cmdName, cmd.NoHistory);
app.Editor.SelectCtrl.RestState(); app.Editor.SelectCtrl.RestState();
let abort: boolean = true; let abort: boolean = true;

Loading…
Cancel
Save