@gedit/editor-2d 0.1.114 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/editor2d-context-key-service.js +24 -35
- package/lib/browser/editor2d-context-key-service.js.map +1 -1
- package/lib/browser/editor2d-contribution.js +89 -139
- package/lib/browser/editor2d-contribution.js.map +1 -1
- package/lib/browser/editor2d-frontend-module.js +20 -20
- package/lib/browser/editor2d-frontend-module.js.map +1 -1
- package/lib/browser/editor2d-label-provider.d.ts +0 -1
- package/lib/browser/editor2d-label-provider.d.ts.map +1 -1
- package/lib/browser/editor2d-label-provider.js +37 -58
- package/lib/browser/editor2d-label-provider.js.map +1 -1
- package/lib/browser/editor2d-model-provider.js +61 -127
- package/lib/browser/editor2d-model-provider.js.map +1 -1
- package/lib/browser/editor2d-ref-provider-contribution.d.ts +1 -1
- package/lib/browser/editor2d-ref-provider-contribution.d.ts.map +1 -1
- package/lib/browser/editor2d-ref-provider-contribution.js +46 -112
- package/lib/browser/editor2d-ref-provider-contribution.js.map +1 -1
- package/lib/browser/editor2d-service.js +66 -85
- package/lib/browser/editor2d-service.js.map +1 -1
- package/lib/browser/model/editor2d-document.d.ts +46 -20
- package/lib/browser/model/editor2d-document.d.ts.map +1 -1
- package/lib/browser/model/editor2d-document.js +602 -549
- package/lib/browser/model/editor2d-document.js.map +1 -1
- package/lib/browser/model/editor2d-iterator.js +27 -67
- package/lib/browser/model/editor2d-iterator.js.map +1 -1
- package/lib/browser/model/editor2d-model-container.js +10 -21
- package/lib/browser/model/editor2d-model-container.js.map +1 -1
- package/lib/browser/model/editor2d-model.js +77 -92
- package/lib/browser/model/editor2d-model.js.map +1 -1
- package/lib/browser/model/editor2d-selection.js +16 -43
- package/lib/browser/model/editor2d-selection.js.map +1 -1
- package/lib/browser/model/editor2d-widget.js +71 -90
- package/lib/browser/model/editor2d-widget.js.map +1 -1
- package/lib/browser/model/editor2d.d.ts +8 -4
- package/lib/browser/model/editor2d.d.ts.map +1 -1
- package/lib/browser/model/editor2d.js +61 -128
- package/lib/browser/model/editor2d.js.map +1 -1
- package/lib/browser/model/utils/anim.utils.d.ts +3 -0
- package/lib/browser/model/utils/anim.utils.d.ts.map +1 -1
- package/lib/browser/model/utils/anim.utils.js +24 -18
- package/lib/browser/model/utils/anim.utils.js.map +1 -1
- package/lib/browser/playground/canvas-draw.d.ts +8 -0
- package/lib/browser/playground/canvas-draw.d.ts.map +1 -1
- package/lib/browser/playground/canvas-draw.js +164 -252
- package/lib/browser/playground/canvas-draw.js.map +1 -1
- package/lib/browser/playground/canvas-layer.d.ts +10 -2
- package/lib/browser/playground/canvas-layer.d.ts.map +1 -1
- package/lib/browser/playground/canvas-layer.js +78 -102
- package/lib/browser/playground/canvas-layer.js.map +1 -1
- package/lib/browser/playground/entities/document-entity.js +8 -28
- package/lib/browser/playground/entities/document-entity.js.map +1 -1
- package/lib/browser/playground/entities/editor2d-entity.js +14 -37
- package/lib/browser/playground/entities/editor2d-entity.js.map +1 -1
- package/lib/browser/playground/entities/extend-entity.d.ts +10 -0
- package/lib/browser/playground/entities/extend-entity.d.ts.map +1 -0
- package/lib/browser/playground/entities/extend-entity.js +34 -0
- package/lib/browser/playground/entities/extend-entity.js.map +1 -0
- package/lib/browser/playground/entities/index.d.ts +1 -0
- package/lib/browser/playground/entities/index.d.ts.map +1 -1
- package/lib/browser/playground/entities/index.js +1 -0
- package/lib/browser/playground/entities/index.js.map +1 -1
- package/lib/browser/playground/extend-edit-layer-point-event.d.ts +30 -0
- package/lib/browser/playground/extend-edit-layer-point-event.d.ts.map +1 -0
- package/lib/browser/playground/extend-edit-layer-point-event.js +50 -0
- package/lib/browser/playground/extend-edit-layer-point-event.js.map +1 -0
- package/lib/browser/playground/extend-edit-layer.d.ts +38 -0
- package/lib/browser/playground/extend-edit-layer.d.ts.map +1 -0
- package/lib/browser/playground/extend-edit-layer.js +335 -0
- package/lib/browser/playground/extend-edit-layer.js.map +1 -0
- package/lib/browser/playground/index.d.ts +1 -0
- package/lib/browser/playground/index.d.ts.map +1 -1
- package/lib/browser/playground/index.js +1 -0
- package/lib/browser/playground/index.js.map +1 -1
- package/lib/browser/playground/path-edit-layer-move-point.d.ts +15 -0
- package/lib/browser/playground/path-edit-layer-move-point.d.ts.map +1 -0
- package/lib/browser/playground/path-edit-layer-move-point.js +47 -0
- package/lib/browser/playground/path-edit-layer-move-point.js.map +1 -0
- package/lib/browser/playground/path-edit-layer-svg-path.d.ts +11 -0
- package/lib/browser/playground/path-edit-layer-svg-path.d.ts.map +1 -0
- package/lib/browser/playground/path-edit-layer-svg-path.js +21 -0
- package/lib/browser/playground/path-edit-layer-svg-path.js.map +1 -0
- package/lib/browser/playground/path-edit-layer.d.ts +36 -0
- package/lib/browser/playground/path-edit-layer.d.ts.map +1 -0
- package/lib/browser/playground/path-edit-layer.js +257 -0
- package/lib/browser/playground/path-edit-layer.js.map +1 -0
- package/lib/browser/playground/playground-context.d.ts +3 -1
- package/lib/browser/playground/playground-context.d.ts.map +1 -1
- package/lib/browser/playground/playground-context.js +49 -47
- package/lib/browser/playground/playground-context.js.map +1 -1
- package/lib/browser/playground/playground-contribution.d.ts +2 -0
- package/lib/browser/playground/playground-contribution.d.ts.map +1 -1
- package/lib/browser/playground/playground-contribution.js +100 -67
- package/lib/browser/playground/playground-contribution.js.map +1 -1
- package/lib/browser/playground/selection-entity-manager.js +74 -132
- package/lib/browser/playground/selection-entity-manager.js.map +1 -1
- package/lib/browser/playground/selector-extend-icons.js +15 -16
- package/lib/browser/playground/selector-extend-icons.js.map +1 -1
- package/lib/browser/playground/selector-extend-renderer.d.ts +3 -2
- package/lib/browser/playground/selector-extend-renderer.d.ts.map +1 -1
- package/lib/browser/playground/selector-extend-renderer.js +67 -52
- package/lib/browser/playground/selector-extend-renderer.js.map +1 -1
- package/lib/browser/utils/snapshot.d.ts.map +1 -1
- package/lib/browser/utils/snapshot.js +81 -172
- package/lib/browser/utils/snapshot.js.map +1 -1
- package/package.json +9 -7
- package/src/browser/editor2d-label-provider.ts +1 -15
- package/src/browser/editor2d-ref-provider-contribution.ts +8 -8
- package/src/browser/model/editor2d-document.ts +284 -51
- package/src/browser/model/editor2d.ts +21 -5
- package/src/browser/model/utils/anim.utils.ts +9 -2
- package/src/browser/playground/canvas-draw.ts +31 -17
- package/src/browser/playground/canvas-layer.ts +25 -3
- package/src/browser/playground/entities/extend-entity.ts +37 -0
- package/src/browser/playground/entities/index.ts +1 -0
- package/src/browser/playground/extend-edit-layer-point-event.tsx +71 -0
- package/src/browser/playground/extend-edit-layer.tsx +442 -0
- package/src/browser/playground/index.ts +1 -0
- package/src/browser/playground/path-edit-layer-move-point.tsx +71 -0
- package/src/browser/playground/path-edit-layer-svg-path.tsx +50 -0
- package/src/browser/playground/path-edit-layer.tsx +330 -0
- package/src/browser/playground/playground-context.ts +2 -0
- package/src/browser/playground/playground-contribution.ts +37 -3
- package/src/browser/playground/selector-extend-renderer.tsx +43 -10
- package/src/browser/style/canvas-layer.css +16 -0
- package/src/browser/style/extend-edit-layer.less +127 -0
- package/src/browser/style/index.less +2 -1
- package/src/browser/style/path-edit-layer.less +72 -0
- package/src/browser/svg/pen+.svg +24 -0
- package/src/browser/utils/snapshot.ts +1 -0
- package/lib/browser/playground/canvas-draw-layer.d.ts +0 -22
- package/lib/browser/playground/canvas-draw-layer.d.ts.map +0 -1
- package/lib/browser/playground/canvas-draw-layer.js +0 -126
- package/lib/browser/playground/canvas-draw-layer.js.map +0 -1
- package/src/browser/playground/canvas-draw-layer.tsx +0 -88
- package/src/browser/style/canvas-draw-layer.less +0 -24
|
@@ -1,30 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
29
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
30
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -37,168 +11,143 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
37
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
38
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
39
13
|
};
|
|
40
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
41
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
42
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
43
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
44
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
45
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
46
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
50
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
51
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
52
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
53
|
-
function step(op) {
|
|
54
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
55
|
-
while (_) try {
|
|
56
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
57
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
58
|
-
switch (op[0]) {
|
|
59
|
-
case 0: case 1: t = op; break;
|
|
60
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
61
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
62
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
63
|
-
default:
|
|
64
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
65
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
66
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
67
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
68
|
-
if (t[2]) _.ops.pop();
|
|
69
|
-
_.trys.pop(); continue;
|
|
70
|
-
}
|
|
71
|
-
op = body.call(thisArg, _);
|
|
72
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
73
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
var __values = (this && this.__values) || function(o) {
|
|
77
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
78
|
-
if (m) return m.call(o);
|
|
79
|
-
if (o && typeof o.length === "number") return {
|
|
80
|
-
next: function () {
|
|
81
|
-
if (o && i >= o.length) o = void 0;
|
|
82
|
-
return { value: o && o[i++], done: !o };
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
86
|
-
};
|
|
87
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
88
|
-
exports.Editor2dDocument = void 0;
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
15
|
+
exports.Editor2dDocument = exports.Editor2dComponentProvider = exports.maskEnabledArray = exports.maskShowArray = void 0;
|
|
16
|
+
const inversify_1 = require("inversify");
|
|
17
|
+
const utils_1 = require("@gedit/utils");
|
|
18
|
+
const editor2d_1 = require("./editor2d");
|
|
19
|
+
const render_engine_1 = require("@gedit/render-engine");
|
|
20
|
+
const render_engine_ide_1 = require("@gedit/render-engine-ide");
|
|
21
|
+
const tree_1 = require("@gedit/tree");
|
|
22
|
+
const browser_1 = require("@gedit/resource/lib/browser");
|
|
23
|
+
const connection_1 = require("@gedit/connection");
|
|
24
|
+
const workspace_2d_1 = require("@gedit/workspace-2d");
|
|
25
|
+
const resource_1 = require("@gedit/resource");
|
|
26
|
+
const app_config_1 = require("@gedit/app-config");
|
|
27
|
+
const editor2d_iterator_1 = require("./editor2d-iterator");
|
|
28
|
+
// import { getAnimationKeys, getChangeAnimationData } from './utils';
|
|
29
|
+
exports.maskShowArray = [
|
|
30
|
+
render_engine_1.GameObjectBaseType.IMAGE,
|
|
31
|
+
render_engine_1.GameObjectBaseType.RECTANGLE,
|
|
32
|
+
render_engine_1.GameObjectBaseType.PATH,
|
|
33
|
+
render_engine_1.GameObjectBaseType.CIRCLE,
|
|
34
|
+
render_engine_1.GameObjectBaseType.POLYGON,
|
|
35
|
+
render_engine_1.GameObjectBaseType.TEXT,
|
|
36
|
+
render_engine_1.GameObjectBaseType.TRIANGLE,
|
|
37
|
+
];
|
|
38
|
+
exports.maskEnabledArray = [
|
|
39
|
+
render_engine_1.GameObjectBaseType.GROUP,
|
|
40
|
+
render_engine_1.GameObjectBaseType.PARTICLES,
|
|
41
|
+
];
|
|
42
|
+
let versionId = 0;
|
|
43
|
+
exports.Editor2dComponentProvider = Symbol('Editor2dComponentProvider');
|
|
44
|
+
let Editor2dDocument = class Editor2dDocument extends tree_1.TreeImpl {
|
|
45
|
+
constructor(message, options, resourceProvider, resourceAutoSaveService, resourceService, engineService, appConfig, componentProvider) {
|
|
46
|
+
super();
|
|
47
|
+
this.message = message;
|
|
48
|
+
this.options = options;
|
|
49
|
+
this.resourceProvider = resourceProvider;
|
|
50
|
+
this.resourceAutoSaveService = resourceAutoSaveService;
|
|
51
|
+
this.resourceService = resourceService;
|
|
52
|
+
this.engineService = engineService;
|
|
53
|
+
this.appConfig = appConfig;
|
|
54
|
+
this.componentProvider = componentProvider;
|
|
55
|
+
this.onContentChangedEmitter = new utils_1.Emitter();
|
|
56
|
+
this.onSavedEmitter = new utils_1.Emitter();
|
|
57
|
+
this.onContentChanged = this.onContentChangedEmitter.event;
|
|
58
|
+
this.onSaved = this.onSavedEmitter.event;
|
|
59
|
+
this.animationStarted = false;
|
|
60
|
+
this.animationIds = []; // 当前正在录制的动画节点
|
|
61
|
+
this._localVersion = 0;
|
|
62
|
+
this._saveVersion = 0;
|
|
63
|
+
this.errors = [];
|
|
64
|
+
// protected componentContents: { [key: string]: Editor2dNode } = {};
|
|
65
|
+
this._snaplines = [];
|
|
66
|
+
this.loading = true;
|
|
67
|
+
this.fireContentChanged = (nodes, type, noSave, noFiredChanged) => {
|
|
127
68
|
// TODO 这里修改目前还是全量的,需要优化
|
|
128
|
-
|
|
129
|
-
|
|
69
|
+
const contents = nodes.map(n => ({ text: 'treeNode' }));
|
|
70
|
+
this._localVersion = ++versionId;
|
|
130
71
|
if (!noFiredChanged) {
|
|
131
|
-
|
|
72
|
+
this.onContentChangedEmitter.fire({ document: this, contentChanges: contents, nodes, type });
|
|
132
73
|
}
|
|
133
|
-
if (!
|
|
134
|
-
|
|
135
|
-
if (
|
|
136
|
-
|
|
74
|
+
if (!this.loading && !noSave) {
|
|
75
|
+
this._saveVersion++;
|
|
76
|
+
if (this._saveVersion === Number.MAX_VALUE) {
|
|
77
|
+
this._saveVersion = 0;
|
|
137
78
|
}
|
|
138
|
-
|
|
79
|
+
this.onSavedEmitter.fire({ document: this, contentChanges: contents, nodes, type });
|
|
139
80
|
}
|
|
140
81
|
};
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
82
|
+
this.refreshingNodes = new WeakMap();
|
|
83
|
+
this.toDispose.push(this.onContentChangedEmitter);
|
|
84
|
+
this.toDispose.push(this.onSavedEmitter);
|
|
144
85
|
// this.toDispose.
|
|
145
86
|
// this.toDispose.push(this.resourceAutoSaveService);
|
|
146
|
-
|
|
147
|
-
|
|
87
|
+
this.toDispose.push(this.resourceAutoSaveService.onSyncContent(content => this.reloadContent(content || '')));
|
|
88
|
+
this.toDispose.push(this.onSaved(event => this.resourceAutoSaveService.fireDidChangeContent(event)));
|
|
89
|
+
// 组件数据加载
|
|
90
|
+
if (this.componentProvider) {
|
|
91
|
+
this.toDispose.push(this.componentProvider.onLoad(() => {
|
|
92
|
+
this.fireContentChanged([], 'update', true);
|
|
93
|
+
}));
|
|
94
|
+
// 组件数据更新
|
|
95
|
+
this.toDispose.push(this.componentProvider.onComponentChanged((0, utils_1.debounce)((compUri) => {
|
|
96
|
+
if (this.uri === compUri.toString()) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (this.hasIncludesComponent(compUri)) {
|
|
100
|
+
this.fireContentChanged([], 'update', true);
|
|
101
|
+
}
|
|
102
|
+
}, 1000)));
|
|
103
|
+
}
|
|
148
104
|
// TODO
|
|
149
105
|
// this.toDispose.push(this.resourceService.onRefsChange(async () => {
|
|
150
106
|
// await this.loadRefInfos();
|
|
151
107
|
// }));
|
|
152
108
|
// 同步数据
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
109
|
+
this.resourceAutoSaveService.sync();
|
|
110
|
+
}
|
|
111
|
+
get uri() {
|
|
112
|
+
return this.options.autoSaveService.resource.uri.toString();
|
|
113
|
+
}
|
|
114
|
+
get engineName() {
|
|
115
|
+
return this.appConfig.engineName;
|
|
116
|
+
}
|
|
117
|
+
hasIncludesComponent(compUri) {
|
|
118
|
+
var _a;
|
|
119
|
+
if (!this.root)
|
|
120
|
+
return false;
|
|
121
|
+
for (const node of new editor2d_iterator_1.Editor2dIterator(this.root)) {
|
|
122
|
+
if (node !== this.root
|
|
123
|
+
&& node.displayType === render_engine_1.GameObjectBaseType.COMPONENT
|
|
124
|
+
&& new utils_1.URI((_a = node.component) === null || _a === void 0 ? void 0 : _a.id).displayName === compUri.displayName) {
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
170
130
|
/**
|
|
171
131
|
* 切换资源, 只有模板编辑器需要用到
|
|
172
132
|
*/
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
* 获取依赖的组件的内容
|
|
192
|
-
* @param compPath
|
|
193
|
-
* @param parentNode
|
|
194
|
-
*/
|
|
195
|
-
Editor2dDocument.prototype.getComponentContent = function (compPath, parentNode) {
|
|
196
|
-
var comp = this.componentContents[compPath];
|
|
197
|
-
if (comp && comp.children)
|
|
198
|
-
return comp.children.map(function (c) { return (__assign(__assign({}, c), { parent: parentNode })); });
|
|
199
|
-
};
|
|
200
|
-
Editor2dDocument.prototype.createDisplayNode = function (displayType, parent, position, index, data) {
|
|
201
|
-
var parentNode;
|
|
133
|
+
async changeResource(uri) {
|
|
134
|
+
const uriObj = new utils_1.URI(uri);
|
|
135
|
+
const resource = await this.resourceProvider(uriObj);
|
|
136
|
+
this.resourceAutoSaveService.changeResource(resource);
|
|
137
|
+
this.resourceAutoSaveService.sync();
|
|
138
|
+
}
|
|
139
|
+
// /**
|
|
140
|
+
// * 获取依赖的组件的内容
|
|
141
|
+
// * @param compPath
|
|
142
|
+
// * @param parentNode
|
|
143
|
+
// */
|
|
144
|
+
getComponentContent(compPath, parentNode) {
|
|
145
|
+
if (!this.componentProvider)
|
|
146
|
+
return undefined;
|
|
147
|
+
return this.componentProvider.getComponentContent(compPath, parentNode);
|
|
148
|
+
}
|
|
149
|
+
createDisplayNode(displayType, parent, position, index, data) {
|
|
150
|
+
let parentNode;
|
|
202
151
|
if (!parent || editor2d_1.Editor2dNode.isRootNode(parent)) {
|
|
203
152
|
parentNode = this.getNode(editor2d_1.Editor2dNode.ROOT_NODE_ID);
|
|
204
153
|
}
|
|
@@ -206,10 +155,10 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
206
155
|
parentNode = editor2d_1.Editor2dNode.toContainerNode(parent);
|
|
207
156
|
}
|
|
208
157
|
// const lastChild = parentNode.children.slice().reverse().find(c => c.position !== undefined);
|
|
209
|
-
|
|
158
|
+
const attrs = this.engineService.getDisplayDefaultData(this.engineName, displayType);
|
|
210
159
|
if (attrs.position) {
|
|
211
160
|
if (!position) {
|
|
212
|
-
|
|
161
|
+
const pos = 100 + Math.round(Math.random() * 100);
|
|
213
162
|
position = (displayType !== render_engine_1.GameObjectBaseType.GROUP && displayType !== render_engine_1.GameObjectBaseType.COMPONENT) ? { x: pos, y: pos } : { x: 0, y: 0 };
|
|
214
163
|
}
|
|
215
164
|
attrs.position.x = position.x;
|
|
@@ -222,23 +171,23 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
222
171
|
// // attrs.position.y = lastChild.position!.y + 20;
|
|
223
172
|
// }
|
|
224
173
|
}
|
|
225
|
-
|
|
226
|
-
|
|
174
|
+
const name = this.getUniqueName(parentNode.children || [], (data === null || data === void 0 ? void 0 : data.name) || this.engineService.getGameObjectIDERegister(this.engineName, displayType).decoration.name);
|
|
175
|
+
const node = editor2d_1.Editor2dNode.createNode(Object.assign(Object.assign(Object.assign({}, attrs), data), { name }), displayType, undefined, Object.keys(this.nodes));
|
|
227
176
|
this.addChildren(node, parentNode, index === undefined ? 0 : index);
|
|
228
177
|
return node;
|
|
229
|
-
}
|
|
230
|
-
|
|
178
|
+
}
|
|
179
|
+
copyNode(targetNode) {
|
|
231
180
|
if (!targetNode || editor2d_1.Editor2dNode.isRootNode(targetNode))
|
|
232
181
|
return;
|
|
233
|
-
|
|
182
|
+
const parent = targetNode.parent;
|
|
234
183
|
if (!this.canbeAddAsChild(parent, targetNode.displayType))
|
|
235
184
|
return;
|
|
236
|
-
|
|
237
|
-
|
|
185
|
+
const children = parent.children;
|
|
186
|
+
const index = children.findIndex(value => value.id === targetNode.id);
|
|
238
187
|
return this.copyToParentNode(parent, targetNode, index + 1);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
|
|
188
|
+
}
|
|
189
|
+
copyToParentNode(parentNode, nodeData, index, position) {
|
|
190
|
+
let parent = undefined;
|
|
242
191
|
if (this.canbeAddAsChild(parentNode, nodeData.displayType)) {
|
|
243
192
|
parent = parentNode;
|
|
244
193
|
}
|
|
@@ -246,14 +195,14 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
246
195
|
parent = parentNode.parent;
|
|
247
196
|
}
|
|
248
197
|
if (parent) {
|
|
249
|
-
|
|
198
|
+
const newNode = editor2d_1.Editor2dNode.clone(nodeData, [], Object.keys(this.nodes));
|
|
250
199
|
if (newNode.position) {
|
|
251
200
|
newNode.position.x = position ? position.x : newNode.position.x + 20;
|
|
252
201
|
newNode.position.y = position ? position.y : newNode.position.y + 20;
|
|
253
202
|
}
|
|
254
203
|
if (index === undefined) {
|
|
255
204
|
if (parent === parentNode.parent) {
|
|
256
|
-
index = parent.children.findIndex(
|
|
205
|
+
index = parent.children.findIndex(value => value.id === parentNode.id);
|
|
257
206
|
if (index < 0) {
|
|
258
207
|
index = 0;
|
|
259
208
|
}
|
|
@@ -262,9 +211,9 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
262
211
|
index = 0;
|
|
263
212
|
}
|
|
264
213
|
}
|
|
265
|
-
|
|
266
|
-
Object.assign(newNode, { name
|
|
267
|
-
|
|
214
|
+
const name = this.getUniqueName((parent.children || []), nodeData.name);
|
|
215
|
+
Object.assign(newNode, { name });
|
|
216
|
+
let children = parent.children;
|
|
268
217
|
if (!children) {
|
|
269
218
|
children = parent.children = [];
|
|
270
219
|
parent.expanded = true;
|
|
@@ -276,11 +225,11 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
276
225
|
this.fireContentChanged([newNode], 'add');
|
|
277
226
|
return newNode;
|
|
278
227
|
}
|
|
279
|
-
}
|
|
280
|
-
|
|
228
|
+
}
|
|
229
|
+
delNode(targetNode, silent) {
|
|
281
230
|
if (!targetNode || editor2d_1.Editor2dNode.isRootNode(targetNode))
|
|
282
231
|
return;
|
|
283
|
-
|
|
232
|
+
const parent = targetNode.parent;
|
|
284
233
|
this.removeNode(targetNode);
|
|
285
234
|
tree_1.CompositeTreeNode.removeChild(parent, targetNode);
|
|
286
235
|
if (!editor2d_1.Editor2dNode.isRootNode(parent) && parent.children.length === 0) {
|
|
@@ -290,25 +239,20 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
290
239
|
if (!silent) {
|
|
291
240
|
this.fireContentChanged([targetNode], 'delete');
|
|
292
241
|
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
var targetNodes = [];
|
|
297
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
298
|
-
targetNodes[_i] = arguments[_i];
|
|
299
|
-
}
|
|
300
|
-
targetNodes.forEach(function (node) { return _this.delNode(node, true); });
|
|
242
|
+
}
|
|
243
|
+
delNodes(...targetNodes) {
|
|
244
|
+
targetNodes.forEach(node => this.delNode(node, true));
|
|
301
245
|
if (targetNodes.length > 0) {
|
|
302
246
|
this.fireContentChanged(targetNodes, 'delete');
|
|
303
247
|
}
|
|
304
|
-
}
|
|
305
|
-
|
|
248
|
+
}
|
|
249
|
+
rename(targetNode, name) {
|
|
306
250
|
if (!name || !targetNode || editor2d_1.Editor2dNode.isRootNode(targetNode))
|
|
307
251
|
return;
|
|
308
|
-
this.updateNode(targetNode, { name
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
|
|
252
|
+
this.updateNode(targetNode, { name });
|
|
253
|
+
}
|
|
254
|
+
addChildren(node, parentNode, index = 0) {
|
|
255
|
+
this.clearMask(node);
|
|
312
256
|
if (node.parent) {
|
|
313
257
|
this.delNode(node, true);
|
|
314
258
|
}
|
|
@@ -318,23 +262,21 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
318
262
|
parentNode.children.splice(index, 0, node);
|
|
319
263
|
tree_1.CompositeTreeNode.setParent(node, index, parentNode);
|
|
320
264
|
parentNode.expanded = true;
|
|
265
|
+
this.nextMaskToNode(node);
|
|
321
266
|
this.refresh(parentNode);
|
|
322
267
|
this.fireContentChanged([node], node.parent ? 'update' : 'add');
|
|
323
|
-
}
|
|
268
|
+
}
|
|
324
269
|
/**
|
|
325
270
|
* 打开节点
|
|
326
271
|
*/
|
|
327
|
-
|
|
328
|
-
if (expanded === void 0) { expanded = true; }
|
|
272
|
+
expandNode(node, expanded = true) {
|
|
329
273
|
if (tree_1.CompositeTreeNode.is(node)) {
|
|
330
274
|
node.expanded = expanded;
|
|
331
275
|
this.refresh(node);
|
|
332
276
|
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
if (forceUpdate === void 0) { forceUpdate = false; }
|
|
337
|
-
var treeNode = typeof node === 'string' ? this.nodes[node] : this.nodes[node.id];
|
|
277
|
+
}
|
|
278
|
+
updateNode(node, data = {}, forceUpdate = false, noSave, noFiredChanged) {
|
|
279
|
+
const treeNode = typeof node === 'string' ? this.nodes[node] : this.nodes[node.id];
|
|
338
280
|
if (!treeNode)
|
|
339
281
|
return;
|
|
340
282
|
// if (data.name) {
|
|
@@ -349,24 +291,27 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
349
291
|
console.error('无法覆盖同步节点数据: ', treeNode, data);
|
|
350
292
|
return;
|
|
351
293
|
}
|
|
352
|
-
|
|
294
|
+
const changed = forceUpdate ? true : utils_1.Compare.isDeepChanged(treeNode, data);
|
|
353
295
|
if (changed) {
|
|
354
296
|
Object.assign(treeNode, data);
|
|
355
297
|
treeNode.version = (treeNode.version || 0) + 1;
|
|
356
298
|
// this.refresh(treeNode as Editor2dContainerNode);
|
|
357
299
|
this.fireContentChanged([treeNode], 'update', noSave, noFiredChanged);
|
|
358
300
|
}
|
|
359
|
-
}
|
|
301
|
+
}
|
|
360
302
|
/**
|
|
361
303
|
* 检测节点名字,保证唯一
|
|
362
304
|
* @param siblings
|
|
363
|
-
* @param
|
|
305
|
+
* @param name
|
|
364
306
|
* @protected
|
|
365
307
|
*/
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
if (
|
|
308
|
+
getUniqueName(siblings, name, i = 0) {
|
|
309
|
+
const numMatched = name.match(/[0-9]+$/);
|
|
310
|
+
let newName = i ? `${name}${i}` : name;
|
|
311
|
+
if (numMatched) {
|
|
312
|
+
newName = name.slice(0, numMatched.index) + (parseInt(numMatched[0]) + i);
|
|
313
|
+
}
|
|
314
|
+
if (siblings.some(n => n.name === newName)) {
|
|
370
315
|
return this.getUniqueName(siblings, name, i + 1);
|
|
371
316
|
}
|
|
372
317
|
return newName;
|
|
@@ -381,22 +326,22 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
381
326
|
return this.getUniqueName(siblings, name, displayType);
|
|
382
327
|
}
|
|
383
328
|
return name; */
|
|
384
|
-
}
|
|
385
|
-
|
|
329
|
+
}
|
|
330
|
+
getSiblings(treeNode) {
|
|
386
331
|
if (treeNode.parent) {
|
|
387
|
-
return treeNode.parent.children.filter(
|
|
332
|
+
return treeNode.parent.children.filter(n => n !== treeNode);
|
|
388
333
|
}
|
|
389
334
|
return [];
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
|
|
335
|
+
}
|
|
336
|
+
reloadContent(content) {
|
|
337
|
+
let data = { version: this.version };
|
|
393
338
|
this.loading = true;
|
|
394
339
|
try {
|
|
395
340
|
data = JSON.parse(content || '{}');
|
|
396
341
|
}
|
|
397
342
|
catch (e) {
|
|
398
343
|
console.error(e);
|
|
399
|
-
this.message.error(
|
|
344
|
+
this.message.error(`文件 ${this.uri} 内容解析失败`);
|
|
400
345
|
}
|
|
401
346
|
if (data.content) {
|
|
402
347
|
this._localVersion = data.content.version;
|
|
@@ -411,113 +356,262 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
411
356
|
this._snaplines = data.snaplines;
|
|
412
357
|
}
|
|
413
358
|
this.refresh();
|
|
414
|
-
this.loadRefInfos();
|
|
359
|
+
// this.loadRefInfos();
|
|
415
360
|
this.fireContentChanged([], 'add', true);
|
|
416
|
-
}
|
|
417
|
-
|
|
361
|
+
}
|
|
362
|
+
reloadEnd() {
|
|
418
363
|
if (this.loading) {
|
|
419
364
|
this.loading = false;
|
|
420
365
|
}
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
|
|
366
|
+
}
|
|
367
|
+
createRootNode() {
|
|
368
|
+
const root = editor2d_1.Editor2dNode.createRootNode(new utils_1.URI(this.uri));
|
|
424
369
|
if (root.displayType === render_engine_1.GameObjectBaseType.SCENE) {
|
|
425
|
-
|
|
370
|
+
const defaultData = this.engineService.getDisplayDefaultData(this.engineName, render_engine_1.GameObjectBaseType.SCENE);
|
|
426
371
|
Object.assign(root, defaultData);
|
|
427
372
|
}
|
|
428
373
|
return root;
|
|
429
|
-
}
|
|
430
|
-
|
|
374
|
+
}
|
|
375
|
+
save() {
|
|
431
376
|
return this.resourceAutoSaveService.save();
|
|
432
|
-
}
|
|
377
|
+
}
|
|
433
378
|
;
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
379
|
+
get dirty() {
|
|
380
|
+
return this.resourceAutoSaveService.dirty;
|
|
381
|
+
}
|
|
382
|
+
get autoSave() {
|
|
383
|
+
return this.resourceAutoSaveService.autoSave;
|
|
384
|
+
}
|
|
385
|
+
get onDirtyChanged() {
|
|
386
|
+
return this.resourceAutoSaveService.onDirtyChanged;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* @mask 操作说明
|
|
390
|
+
* 1. 当前 isMask 为 true, 移除 prevNode 上的 mask, 移到相应的图层后再设。
|
|
391
|
+
* 2. 当前 isMask 为 true 且 mask 有值,只清除 mask;
|
|
392
|
+
* 3. 当前是 mask child,先移除 mask, 拖到指定后再判断下一个是否 mask, 再附值;
|
|
393
|
+
* 4. 当前不是 mask, 移到 mask 树下,,设定下一个 node 上的 mask, 如果下一个 node 是 mask, 直接附值 id;
|
|
394
|
+
*/
|
|
395
|
+
clearMask(node) {
|
|
396
|
+
// 只 mask 状态时, 移除 prevNode 上的 mask;
|
|
397
|
+
if (node.isMask && !node.mask) {
|
|
398
|
+
this.setPrevNodeMask(node.previousSibling);
|
|
399
|
+
}
|
|
400
|
+
// 当前忽略底层 mask 的,恢复上面的 mask;
|
|
401
|
+
if (node.mask && node.ignoreMask) {
|
|
402
|
+
this.setPrevNodeMask(node.previousSibling, node.mask);
|
|
403
|
+
}
|
|
404
|
+
if (node.mask) {
|
|
405
|
+
// 移除 mask;
|
|
406
|
+
node.mask = undefined;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
nextMaskToNode(node) {
|
|
410
|
+
// 判断父级是否 mask 或 maskChild, 如果是则不用设
|
|
411
|
+
const nextNode = node.nextSibling;
|
|
412
|
+
const nextIsMask = nextNode && (nextNode.isMask || nextNode.mask);
|
|
413
|
+
// 如果底下有 mask;
|
|
414
|
+
if (nextIsMask) {
|
|
415
|
+
node.mask = nextNode.mask || nextNode.id;
|
|
416
|
+
// 底层忽略 mask 又是 mask 的情况,用底层的 id;
|
|
417
|
+
if (nextNode.ignoreMask && nextNode.isMask) {
|
|
418
|
+
node.mask = nextNode.id;
|
|
419
|
+
}
|
|
420
|
+
// 忽略 mask, 清除上一层的 mask;
|
|
421
|
+
if (node.ignoreMask) {
|
|
422
|
+
this.setPrevNodeMask(node.previousSibling);
|
|
423
|
+
}
|
|
424
|
+
//
|
|
425
|
+
// this.fireContentChanged([node], 'update', false, true);
|
|
426
|
+
}
|
|
427
|
+
else if (node.isMask) {
|
|
428
|
+
// 不是 mask,且当前是 mask, 设定上一层为 mask child;
|
|
429
|
+
this.setPrevNodeMask(node.previousSibling, node.id);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
setPrevNodeMask(node, id) {
|
|
433
|
+
if (!node) {
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
const n = node;
|
|
437
|
+
// 跳出不是 mask 实列
|
|
438
|
+
if (!exports.maskShowArray.concat(exports.maskEnabledArray).includes(n.displayType)) {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
// this.updateNode(n, { mask: id });
|
|
442
|
+
if (id !== n.mask) {
|
|
443
|
+
// n.version = (n.version || 0) + 1;
|
|
444
|
+
n.mask = id;
|
|
445
|
+
// this.updateNode(n, { mask: id }, true);
|
|
446
|
+
// this.fireContentChanged([n], 'update');
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* 断掉蒙板条件
|
|
450
|
+
* 1. 上一个忽略蒙板
|
|
451
|
+
* 2. 上一个类型不是图形或图片
|
|
452
|
+
* 3. 当前是蒙板,且 id 为 undefined
|
|
453
|
+
*/
|
|
454
|
+
const prevNode = node.previousSibling;
|
|
455
|
+
if (prevNode &&
|
|
456
|
+
!n.ignoreMask &&
|
|
457
|
+
exports.maskShowArray.concat(exports.maskEnabledArray).includes(prevNode.displayType)
|
|
458
|
+
&& !(n.isMask && typeof id === 'undefined')) {
|
|
459
|
+
this.setPrevNodeMask(node.previousSibling, id);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* 切换 mask 图层;
|
|
464
|
+
* 多选:取最后一个当 mask, 并创建编组;
|
|
465
|
+
* 单选:设定同级的 previousSibling 的 isMaskChild = true;
|
|
466
|
+
* @param nodes
|
|
467
|
+
* @param mask
|
|
468
|
+
*/
|
|
469
|
+
toggleMask(nodes, mask) {
|
|
470
|
+
if (nodes.length === 1) {
|
|
471
|
+
const node = nodes[0];
|
|
472
|
+
// this.updateNode(node, { isMask: !!mask });
|
|
473
|
+
/**
|
|
474
|
+
* @设定mask
|
|
475
|
+
* 1. 无特殊情况直接设
|
|
476
|
+
* 2. 在 mask 中且没有忽略底层,只改 isMask 值;
|
|
477
|
+
* 3. 在 mask 中且忽略了底层,改 isMask 和上一层的值;
|
|
478
|
+
*/
|
|
479
|
+
node.isMask = mask;
|
|
480
|
+
// 1 和 3 处理
|
|
481
|
+
if (node.mask && node.ignoreMask || !node.mask) {
|
|
482
|
+
this.setPrevNodeMask(node.previousSibling, mask ? node.id : undefined);
|
|
483
|
+
}
|
|
484
|
+
this.fireContentChanged([node], 'update');
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* @多个处理
|
|
489
|
+
* 多个用 getSelectedNodes, 保持图层顺序
|
|
490
|
+
* 检查最底下一个是否是可当 mask 的元素
|
|
491
|
+
* 1. 是:建个分组将最后个设 mask
|
|
492
|
+
* 2. 不是:Enabled 设定 mask, hierarchy-contribution 里判断
|
|
493
|
+
*/
|
|
494
|
+
nodes = this.getSelectedNodes();
|
|
495
|
+
const group = this.combineNodes(nodes);
|
|
496
|
+
if (!group) {
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
const lastNode = nodes[nodes.length - 1];
|
|
500
|
+
const childNodes = nodes.splice(0, nodes.length - 1);
|
|
501
|
+
lastNode.isMask = true;
|
|
502
|
+
childNodes.forEach(c => {
|
|
503
|
+
if (c.mask !== lastNode.id) {
|
|
504
|
+
c.mask = lastNode.id;
|
|
505
|
+
}
|
|
506
|
+
});
|
|
507
|
+
const groupNextNode = group.nextSibling;
|
|
508
|
+
let id;
|
|
509
|
+
// 如果底层是 maskChild 且没忽略,group 同步底层的 mask
|
|
510
|
+
if (groupNextNode.mask && !groupNextNode.ignoreMask) {
|
|
511
|
+
id = groupNextNode.mask;
|
|
512
|
+
}
|
|
513
|
+
// 如果底层是 mask,且忽略了底层,group mask 设为底层 id
|
|
514
|
+
if (groupNextNode.isMask && groupNextNode.ignoreMask) {
|
|
515
|
+
id = groupNextNode.id;
|
|
516
|
+
}
|
|
517
|
+
if (id) {
|
|
518
|
+
group.mask = id;
|
|
519
|
+
}
|
|
520
|
+
this.fireContentChanged(childNodes.concat([lastNode, group]), 'update');
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* 忽略底层 mask
|
|
524
|
+
* 忽略层 mask 不删除,留着恢复用,
|
|
525
|
+
* 设定忽略层 ignoreMask 和 清除 prev 上的 mask;
|
|
526
|
+
* @param nodes length === 1, 多个忽略
|
|
527
|
+
* @param ignore
|
|
528
|
+
*/
|
|
529
|
+
ignoreMask(nodes, ignore) {
|
|
530
|
+
const node = nodes[0];
|
|
531
|
+
/**
|
|
532
|
+
* @忽略处理
|
|
533
|
+
* 1. 无特殊直接处理
|
|
534
|
+
* 2. 当前是 mask, 设定上一层的 mask 为当前 id;
|
|
535
|
+
*/
|
|
536
|
+
if (ignore !== node.ignoreMask) {
|
|
537
|
+
node.ignoreMask = ignore;
|
|
538
|
+
}
|
|
539
|
+
const nextNode = node.nextSibling;
|
|
540
|
+
if (!ignore && nextNode && !(nextNode.mask || nextNode.isMask)) {
|
|
541
|
+
// 如果底层不是 mask, 清掉mask
|
|
542
|
+
node.mask = undefined;
|
|
543
|
+
}
|
|
544
|
+
// this.updateNode(node, { ignoreMask: ignore });
|
|
545
|
+
let id = ignore ? undefined : node.mask;
|
|
546
|
+
id = node.isMask && ignore ? node.id : id;
|
|
547
|
+
// id = node.isMask && !ignore ? node.mask : id;
|
|
548
|
+
// console.log(id, ignore);
|
|
549
|
+
this.setPrevNodeMask(node.previousSibling, id);
|
|
550
|
+
this.fireContentChanged([node], 'update');
|
|
551
|
+
}
|
|
552
|
+
toggleVisible(nodes, visible) {
|
|
553
|
+
nodes.forEach(node => {
|
|
554
|
+
if (this.checkDecoration(node, 'hidable')) {
|
|
555
|
+
this.updateNode(node, { canvasHide: visible !== undefined ? !visible : !node.canvasHide });
|
|
460
556
|
}
|
|
461
557
|
});
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
_this.updateNode(node, { locked: locked !== undefined ? locked : !node.locked });
|
|
558
|
+
}
|
|
559
|
+
toggleLock(nodes, locked) {
|
|
560
|
+
nodes.forEach(node => {
|
|
561
|
+
if (this.checkDecoration(node, 'lockable')) {
|
|
562
|
+
this.updateNode(node, { locked: locked !== undefined ? locked : !node.locked });
|
|
468
563
|
}
|
|
469
564
|
});
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
565
|
+
}
|
|
566
|
+
moveUp(node, toTop) {
|
|
567
|
+
const children = node.parent.children;
|
|
568
|
+
const targetNode = toTop ? children[0] : node.previousSibling;
|
|
474
569
|
if (targetNode) {
|
|
475
570
|
this.moveToNode(node, targetNode);
|
|
476
571
|
}
|
|
477
|
-
}
|
|
572
|
+
}
|
|
478
573
|
/**
|
|
479
574
|
* 上移动多个节点
|
|
480
575
|
* @param nodes
|
|
481
576
|
*/
|
|
482
|
-
|
|
483
|
-
var _this = this;
|
|
577
|
+
moveUpMore(nodes) {
|
|
484
578
|
nodes = nodes.length > 1
|
|
485
|
-
? nodes.slice().sort(
|
|
579
|
+
? nodes.slice().sort((n1, n2) => tree_1.CompositeTreeNode.indexOf(n1.parent, n1) - tree_1.CompositeTreeNode.indexOf(n2.parent, n2))
|
|
486
580
|
: nodes;
|
|
487
|
-
nodes.forEach(
|
|
488
|
-
}
|
|
581
|
+
nodes.forEach(n => this.moveUp(n));
|
|
582
|
+
}
|
|
489
583
|
/**
|
|
490
584
|
* 下移动多个节点
|
|
491
585
|
*/
|
|
492
|
-
|
|
493
|
-
var _this = this;
|
|
586
|
+
moveDownMore(nodes) {
|
|
494
587
|
nodes = nodes.length > 1
|
|
495
|
-
? nodes.slice().sort(
|
|
588
|
+
? nodes.slice().sort((n1, n2) => tree_1.CompositeTreeNode.indexOf(n2.parent, n2) - tree_1.CompositeTreeNode.indexOf(n1.parent, n1))
|
|
496
589
|
: nodes;
|
|
497
|
-
nodes.forEach(
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
590
|
+
nodes.forEach(n => this.moveDown(n));
|
|
591
|
+
}
|
|
592
|
+
moveDown(node, toBottom) {
|
|
593
|
+
const children = node.parent.children;
|
|
594
|
+
const targetNode = toBottom ? children[children.length - 1] : node.nextSibling;
|
|
502
595
|
if (targetNode) {
|
|
503
596
|
this.moveToNode(node, targetNode, true);
|
|
504
597
|
}
|
|
505
|
-
}
|
|
598
|
+
}
|
|
506
599
|
/**
|
|
507
600
|
* 移动到对应节点位置
|
|
508
601
|
* @param node
|
|
509
602
|
* @param targetNode
|
|
510
603
|
* @param toAfter - 是否加到目标节点的后边,默认前面
|
|
511
604
|
*/
|
|
512
|
-
|
|
605
|
+
moveToNode(node, targetNode, toAfter) {
|
|
513
606
|
if (editor2d_1.Editor2dNode.isRootNode(targetNode) || tree_1.TreeNode.equals(node, targetNode))
|
|
514
607
|
return;
|
|
515
|
-
|
|
516
|
-
|
|
608
|
+
this.clearMask(node);
|
|
609
|
+
const parent = targetNode.parent;
|
|
610
|
+
const children = parent.children;
|
|
517
611
|
this.delNode(node, true);
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
612
|
+
const targetIndex = children.indexOf(targetNode);
|
|
613
|
+
const previousSibling = targetNode.previousSibling;
|
|
614
|
+
const nextSibling = targetNode.nextSibling;
|
|
521
615
|
// const uniqueName = this.getUniqueName(children, node.name!, node.displayType);
|
|
522
616
|
if (!toAfter) {
|
|
523
617
|
children.splice(targetIndex, 0, node);
|
|
@@ -527,8 +621,8 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
527
621
|
});
|
|
528
622
|
}
|
|
529
623
|
Object.assign(node, {
|
|
530
|
-
parent
|
|
531
|
-
previousSibling
|
|
624
|
+
parent,
|
|
625
|
+
previousSibling,
|
|
532
626
|
nextSibling: targetNode,
|
|
533
627
|
});
|
|
534
628
|
Object.assign(targetNode, {
|
|
@@ -541,9 +635,9 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
541
635
|
nextSibling: node
|
|
542
636
|
});
|
|
543
637
|
Object.assign(node, {
|
|
544
|
-
parent
|
|
638
|
+
parent,
|
|
545
639
|
previousSibling: targetNode,
|
|
546
|
-
nextSibling
|
|
640
|
+
nextSibling,
|
|
547
641
|
});
|
|
548
642
|
if (nextSibling) {
|
|
549
643
|
Object.assign(nextSibling, {
|
|
@@ -551,137 +645,138 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
551
645
|
});
|
|
552
646
|
}
|
|
553
647
|
}
|
|
648
|
+
this.nextMaskToNode(node);
|
|
554
649
|
this.refresh(parent);
|
|
555
650
|
this.fireContentChanged([node], 'update');
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
var _this = this;
|
|
651
|
+
}
|
|
652
|
+
moveToNodesAsChildren(nodes, targetNode) {
|
|
559
653
|
// 后边的先加
|
|
560
654
|
nodes = nodes.slice().reverse();
|
|
561
|
-
|
|
655
|
+
const canAddAsChild = !nodes.find(s => !this.canbeAddAsChild(targetNode, s.displayType, s));
|
|
562
656
|
if (canAddAsChild) {
|
|
563
|
-
nodes.forEach(
|
|
657
|
+
nodes.forEach(node => this.addChildren(node, targetNode, 0));
|
|
564
658
|
return true;
|
|
565
659
|
}
|
|
566
660
|
return false;
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
var _this = this;
|
|
661
|
+
}
|
|
662
|
+
moveToNodesAsSiblings(nodes, targetNode) {
|
|
570
663
|
// 后边的先加
|
|
571
664
|
nodes = nodes.slice().reverse();
|
|
572
|
-
|
|
665
|
+
const canAddAsSibling = targetNode.parent && !nodes.find(s => !this.canbeAddAsChild(targetNode.parent, s.displayType, s));
|
|
573
666
|
if (canAddAsSibling) {
|
|
574
|
-
nodes.forEach(
|
|
575
|
-
|
|
667
|
+
nodes.forEach(node => {
|
|
668
|
+
this.moveToNode(node, targetNode, true);
|
|
576
669
|
});
|
|
577
670
|
return true;
|
|
578
671
|
}
|
|
579
672
|
return false;
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
|
|
673
|
+
}
|
|
674
|
+
getSelectedNodes() {
|
|
675
|
+
const nodes = [];
|
|
583
676
|
// eslint-disable-next-line guard-for-in
|
|
584
|
-
for (
|
|
585
|
-
|
|
677
|
+
for (const id in this.nodes) {
|
|
678
|
+
const node = this.nodes[id];
|
|
586
679
|
if (node && node.selected) {
|
|
587
680
|
nodes.push(node);
|
|
588
681
|
}
|
|
589
682
|
}
|
|
590
683
|
return nodes;
|
|
591
|
-
}
|
|
592
|
-
|
|
684
|
+
}
|
|
685
|
+
getNodeById(nodeId) {
|
|
593
686
|
return this.nodes[nodeId];
|
|
594
|
-
}
|
|
595
|
-
|
|
687
|
+
}
|
|
688
|
+
getNodeIcon(node) {
|
|
596
689
|
if (node.tags && node.tags.length > 0) {
|
|
597
|
-
|
|
598
|
-
|
|
690
|
+
const tagId = node.tags[0].id;
|
|
691
|
+
const tagIcon = this.appConfig.getTagIconClass(tagId);
|
|
599
692
|
if (tagIcon)
|
|
600
693
|
return tagIcon;
|
|
601
694
|
}
|
|
602
|
-
|
|
695
|
+
const register = this.engineService.getGameObjectIDERegister(this.engineName, node.displayType);
|
|
603
696
|
if (register && register.decoration && register.decoration.iconClass) {
|
|
604
697
|
return register.decoration.iconClass;
|
|
605
698
|
}
|
|
606
699
|
return '';
|
|
607
|
-
}
|
|
608
|
-
|
|
700
|
+
}
|
|
701
|
+
getNodeIconColor(node) {
|
|
609
702
|
if (node.tags && node.tags.length > 0) {
|
|
610
|
-
|
|
611
|
-
|
|
703
|
+
const tagId = node.tags[0].id;
|
|
704
|
+
const tagIcon = this.appConfig.getTagColorClass(tagId);
|
|
612
705
|
if (tagIcon)
|
|
613
706
|
return tagIcon;
|
|
614
707
|
}
|
|
615
708
|
return '';
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
return this.getSelectedNodes().filter(
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
|
|
709
|
+
}
|
|
710
|
+
getSelectedNodesWithoutRoot() {
|
|
711
|
+
return this.getSelectedNodes().filter(n => !editor2d_1.Editor2dNode.isRootNode(n));
|
|
712
|
+
}
|
|
713
|
+
isContainNode(parent, id) {
|
|
714
|
+
let target = this.nodes[id];
|
|
622
715
|
while (target) {
|
|
623
716
|
if (target.id === parent.id)
|
|
624
717
|
return true;
|
|
625
718
|
target = target.parent;
|
|
626
719
|
}
|
|
627
720
|
return false;
|
|
628
|
-
}
|
|
721
|
+
}
|
|
629
722
|
/**
|
|
630
723
|
* 合并分组
|
|
631
724
|
* @param nodes
|
|
632
725
|
*/
|
|
633
|
-
|
|
726
|
+
combineNodes(n) {
|
|
727
|
+
// 合成分组保持图层顺序
|
|
728
|
+
const nodes = n || this.getSelectedNodes();
|
|
634
729
|
if (nodes.length > 0) {
|
|
635
730
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
731
|
+
const parent = nodes[0].parent;
|
|
732
|
+
const index = tree_1.CompositeTreeNode.indexOf(parent, nodes[0]);
|
|
733
|
+
const group = this.createDisplayNode(render_engine_1.GameObjectBaseType.GROUP, parent, undefined, index);
|
|
639
734
|
this.moveToNodesAsChildren(nodes, group);
|
|
735
|
+
return group;
|
|
640
736
|
}
|
|
641
|
-
}
|
|
737
|
+
}
|
|
642
738
|
/**
|
|
643
739
|
* 解除分组,目前只支持图层
|
|
644
740
|
* @param node
|
|
645
741
|
*/
|
|
646
|
-
|
|
647
|
-
var _this = this;
|
|
742
|
+
unCombineNode(node) {
|
|
648
743
|
if (node.children && node.parent) {
|
|
649
744
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
node.children.slice().reverse().forEach(
|
|
653
|
-
|
|
745
|
+
const parentNode = node.parent;
|
|
746
|
+
const curIndex = tree_1.CompositeTreeNode.indexOf(parentNode, node);
|
|
747
|
+
node.children.slice().reverse().forEach((n) => {
|
|
748
|
+
this.addChildren(n, parentNode, curIndex);
|
|
654
749
|
});
|
|
655
750
|
}
|
|
656
751
|
this.delNode(node);
|
|
657
|
-
}
|
|
752
|
+
}
|
|
658
753
|
/**
|
|
659
754
|
* 可以作为子节点
|
|
660
755
|
* @param targetNode
|
|
661
756
|
* @param childDisplayType
|
|
662
757
|
* @param childNode
|
|
663
758
|
*/
|
|
664
|
-
|
|
759
|
+
canbeAddAsChild(targetNode, childDisplayType, childNode) {
|
|
665
760
|
if (childNode && childNode.parent === targetNode)
|
|
666
761
|
return true;
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
762
|
+
const isRootNode = editor2d_1.Editor2dNode.isRootNode(targetNode);
|
|
763
|
+
const nodeDeco = this.engineService.getGameObjectDecoration(this.engineName, targetNode.displayType);
|
|
764
|
+
const childDeco = this.engineService.getGameObjectDecoration(this.engineName, childDisplayType);
|
|
765
|
+
const childTypes = typeof nodeDeco.childTypes === 'function' ? nodeDeco.childTypes(targetNode) : (nodeDeco.childTypes || []);
|
|
766
|
+
let checkParent = false;
|
|
672
767
|
if (childDeco.parentTypes !== undefined) {
|
|
673
|
-
checkParent = childDeco.parentTypes.find(
|
|
768
|
+
checkParent = childDeco.parentTypes.find(d => targetNode.displayType === d || (isRootNode && d === 'root') || nodeDeco.group === d) !== undefined;
|
|
674
769
|
if (checkParent && childDeco.parentIgnoreTypes !== undefined) {
|
|
675
|
-
checkParent = !childDeco.parentIgnoreTypes.find(
|
|
770
|
+
checkParent = !childDeco.parentIgnoreTypes.find(d => targetNode.displayType === d || (isRootNode && d === 'root') || nodeDeco.group === d);
|
|
676
771
|
}
|
|
677
772
|
}
|
|
678
|
-
|
|
679
|
-
|
|
773
|
+
const checkChildren = childTypes.find(d => childDisplayType === d || childDeco.group === d) !== undefined;
|
|
774
|
+
const checkSuccess = checkParent || checkChildren;
|
|
680
775
|
if (!checkSuccess)
|
|
681
776
|
return false;
|
|
682
|
-
|
|
777
|
+
const siblings = targetNode.children || [];
|
|
683
778
|
if (childDeco.single) {
|
|
684
|
-
|
|
779
|
+
const addedNodes = siblings.filter(s => s.displayType === childDisplayType);
|
|
685
780
|
if (addedNodes.length > 0)
|
|
686
781
|
return false;
|
|
687
782
|
}
|
|
@@ -689,43 +784,40 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
689
784
|
return childDeco.canbeAddedAsChild(targetNode, siblings);
|
|
690
785
|
}
|
|
691
786
|
return true;
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
|
|
787
|
+
}
|
|
788
|
+
checkDecoration(node, decoKey) {
|
|
789
|
+
const deco = this.engineService.getGameObjectDecoration(this.engineName, node.displayType);
|
|
695
790
|
return deco[decoKey] === undefined || !!deco[decoKey];
|
|
696
|
-
}
|
|
697
|
-
|
|
791
|
+
}
|
|
792
|
+
setAnimationStarted(b) {
|
|
698
793
|
this.animationStarted = b;
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
var _this = this;
|
|
794
|
+
}
|
|
795
|
+
startRecordAnimation(animationIds, onNodeChange) {
|
|
702
796
|
// this.animationStarted = true;
|
|
703
797
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
704
|
-
|
|
705
|
-
return n.children && n.children.some(function (c) { return c.id === id || getNodesToChildrenById(c, id); });
|
|
706
|
-
};
|
|
798
|
+
const getNodesToChildrenById = (n, id) => n.children && n.children.some((c) => c.id === id || getNodesToChildrenById(c, id));
|
|
707
799
|
this.animationIds = animationIds();
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
800
|
+
// 缓存移到 timeline 里处理
|
|
801
|
+
/* const cache: Editor2dNode[] = this.animationIds
|
|
802
|
+
.map(id => this.getNodeById(id)).filter(n => !!n)
|
|
803
|
+
.map(node => this.cloneNodeData(node as Editor2dNode)); */
|
|
804
|
+
const toDispose = this.onContentChanged(e => {
|
|
805
|
+
this.animationIds = animationIds();
|
|
713
806
|
// TODO 删除动画元件后,动画面板清空数据
|
|
714
807
|
if (e.nodes) {
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
}
|
|
725
|
-
});
|
|
808
|
+
const nodes = e.nodes.filter((n) =>
|
|
809
|
+
// 新建面板时,加入的元素先插入 cache 记录初始值
|
|
810
|
+
/* if (n && n.animation && n.displayType === GameObjectBaseType.ANIMATION) {
|
|
811
|
+
const { animation = {} } = n;
|
|
812
|
+
const { frames = {} } = animation || {};
|
|
813
|
+
frames.forEach((c: any) => {
|
|
814
|
+
if (!cache.some(d => d.id === c.id)) {
|
|
815
|
+
const node = this.cloneNodeData(this.getNodeById(c.id) as Editor2dNode);
|
|
816
|
+
cache.push(node);
|
|
726
817
|
}
|
|
727
|
-
|
|
728
|
-
}
|
|
818
|
+
});
|
|
819
|
+
} */
|
|
820
|
+
this.animationIds.some(id => (id === n.id) || getNodesToChildrenById(n, id)));
|
|
729
821
|
if (nodes.length) {
|
|
730
822
|
// TODO: 音乐素材变更
|
|
731
823
|
onNodeChange(nodes, e.type);
|
|
@@ -733,179 +825,147 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
733
825
|
}
|
|
734
826
|
});
|
|
735
827
|
return {
|
|
736
|
-
dispose:
|
|
828
|
+
dispose: () => {
|
|
737
829
|
toDispose.dispose();
|
|
738
830
|
// reset node data
|
|
739
|
-
cache.forEach(
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
831
|
+
/* cache.forEach(nodeData => {
|
|
832
|
+
const { displayType } = nodeData;
|
|
833
|
+
const currentNode = this.getNodeById(nodeData.id);
|
|
834
|
+
if (!currentNode) {
|
|
835
|
+
return;
|
|
836
|
+
}
|
|
837
|
+
const register = this.engineService.getGameObjectIDERegister(this.engineService.engineName, displayType);
|
|
838
|
+
const {
|
|
839
|
+
timelineDisabledKeys = [],
|
|
840
|
+
} = this.engineService.getGameObjectDecoration(
|
|
841
|
+
this.engineService.engineName,
|
|
842
|
+
displayType,
|
|
843
|
+
);
|
|
844
|
+
const keysList = getAnimationKeys(this.engineService, register, timelineDisabledKeys);
|
|
845
|
+
const changeData: {[key: string]: any} = getChangeAnimationData(keysList, currentNode, nodeData);
|
|
846
|
+
changeData.name = currentNode?.name;
|
|
847
|
+
this.updateNode(nodeData.id, changeData, true);
|
|
848
|
+
}); */
|
|
752
849
|
// this.animationStarted = false;
|
|
753
|
-
|
|
850
|
+
this.animationIds = [];
|
|
754
851
|
}
|
|
755
852
|
};
|
|
756
|
-
}
|
|
853
|
+
}
|
|
757
854
|
/**
|
|
758
855
|
* 同一个时间周期的refresh自动取消
|
|
759
856
|
* @param raw
|
|
760
857
|
*/
|
|
761
|
-
|
|
762
|
-
var _this = this;
|
|
858
|
+
refresh(raw) {
|
|
763
859
|
if (!raw)
|
|
764
|
-
return
|
|
765
|
-
|
|
860
|
+
return super.refresh();
|
|
861
|
+
const deferred = new utils_1.PromiseDeferred();
|
|
766
862
|
if (this.refreshingNodes.has(raw)) {
|
|
767
|
-
|
|
863
|
+
const cache = this.refreshingNodes.get(raw);
|
|
768
864
|
cache.deferred.resolve(undefined);
|
|
769
865
|
clearTimeout(cache.timeout);
|
|
770
866
|
this.refreshingNodes.delete(raw);
|
|
771
867
|
}
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
.then(
|
|
776
|
-
.catch(
|
|
868
|
+
const timeout = setTimeout(() => {
|
|
869
|
+
this.refreshingNodes.delete(raw);
|
|
870
|
+
super.refresh(raw)
|
|
871
|
+
.then(res => deferred.resolve(res))
|
|
872
|
+
.catch(rej => deferred.reject(rej));
|
|
777
873
|
});
|
|
778
874
|
// @ts-ignore
|
|
779
|
-
this.refreshingNodes.set(raw, { timeout
|
|
875
|
+
this.refreshingNodes.set(raw, { timeout, deferred });
|
|
780
876
|
return deferred.promise;
|
|
781
|
-
}
|
|
782
|
-
|
|
877
|
+
}
|
|
878
|
+
cloneNodeData(node) {
|
|
783
879
|
return (0, utils_1.deepClone)((0, utils_1.omit)(node, ['parent', 'previousSibling', 'nextSibling', 'selected', 'canvasHide', 'version']));
|
|
784
|
-
}
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
_b.label = 3;
|
|
817
|
-
case 3:
|
|
818
|
-
normalize = function (node, version, parent) {
|
|
819
|
-
if (parent) {
|
|
820
|
-
node.parent = parent;
|
|
821
|
-
}
|
|
822
|
-
if (version !== undefined) {
|
|
823
|
-
node.version = version;
|
|
824
|
-
}
|
|
825
|
-
node.children = node.children ? node.children.map(function (c) { return normalize(c, version, node); }) : undefined;
|
|
826
|
-
return node;
|
|
827
|
-
};
|
|
828
|
-
this.componentContents = (0, utils_1.mapValues)(componentContents, function (value) { return value.content ? normalize(value.content, value.version) : undefined; });
|
|
829
|
-
return [4 /*yield*/, this.refresh()];
|
|
830
|
-
case 4:
|
|
831
|
-
_b.sent();
|
|
832
|
-
this.fireContentChanged([], 'add', true);
|
|
833
|
-
return [2 /*return*/];
|
|
834
|
-
}
|
|
835
|
-
});
|
|
836
|
-
});
|
|
837
|
-
};
|
|
838
|
-
Editor2dDocument.prototype.getWarningDesc = function (node) {
|
|
880
|
+
}
|
|
881
|
+
get version() {
|
|
882
|
+
return this._localVersion;
|
|
883
|
+
}
|
|
884
|
+
get length() {
|
|
885
|
+
return Object.keys(this.nodes).length;
|
|
886
|
+
}
|
|
887
|
+
// /**
|
|
888
|
+
// * 检测错误
|
|
889
|
+
// * @protected
|
|
890
|
+
// */
|
|
891
|
+
// protected async loadRefInfos(): Promise<void> {
|
|
892
|
+
// const componentContents = await this.resourceService.getDependenciesContent<Editor2dContent>(this.uri, u => !!u.match(/\.comp/));
|
|
893
|
+
// // 模板模式暂时不做资源依赖检测
|
|
894
|
+
// if (!this.options.isTemplate) {
|
|
895
|
+
// this.errors = await this.resourceService.checkRefsErrors(this.uri);
|
|
896
|
+
// }
|
|
897
|
+
// const normalize = (node: Editor2dNode, version?: number, parent?: Editor2dNode) => {
|
|
898
|
+
// if (parent) {
|
|
899
|
+
// node.parent = parent as Editor2dContainerNode;
|
|
900
|
+
// }
|
|
901
|
+
// if (version !== undefined) {
|
|
902
|
+
// node.version = version;
|
|
903
|
+
// }
|
|
904
|
+
// node.children = node.children ? node.children.map(c => normalize(c as Editor2dNode, version, node)) : undefined;
|
|
905
|
+
// return node;
|
|
906
|
+
// };
|
|
907
|
+
// this.componentContents = mapValues<Editor2dNode>(componentContents, (value: Editor2dContent) => value.content ? normalize(value.content!, value.version) : undefined);
|
|
908
|
+
// await this.refresh();
|
|
909
|
+
// this.fireContentChanged([], 'add', true);
|
|
910
|
+
// }
|
|
911
|
+
getWarningDesc(node) {
|
|
839
912
|
if (node.error && node.error.message)
|
|
840
913
|
return node.error.message;
|
|
841
|
-
|
|
842
|
-
|
|
914
|
+
let uris = [];
|
|
915
|
+
const register = this.engineService.getGameObjectIDERegister(this.engineName, node.displayType);
|
|
843
916
|
if (register.getReferenceUris) {
|
|
844
917
|
uris = register.getReferenceUris(node);
|
|
845
918
|
}
|
|
846
919
|
else {
|
|
847
920
|
return undefined;
|
|
848
921
|
}
|
|
849
|
-
|
|
922
|
+
const error = this.errors.find(e => uris.includes(e.uri));
|
|
850
923
|
return error === null || error === void 0 ? void 0 : error.message;
|
|
851
|
-
}
|
|
852
|
-
|
|
853
|
-
var e_1, _a;
|
|
924
|
+
}
|
|
925
|
+
queryNodesByTypes(types) {
|
|
854
926
|
if (!this.root)
|
|
855
927
|
return [];
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
if (node !== this.root && (!types || types.includes(node.displayType))) {
|
|
861
|
-
nodes.push(node);
|
|
862
|
-
}
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
866
|
-
finally {
|
|
867
|
-
try {
|
|
868
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
928
|
+
const nodes = [];
|
|
929
|
+
for (const node of new editor2d_iterator_1.Editor2dIterator(this.root)) {
|
|
930
|
+
if (node !== this.root && (!types || types.includes(node.displayType))) {
|
|
931
|
+
nodes.push(node);
|
|
869
932
|
}
|
|
870
|
-
finally { if (e_1) throw e_1.error; }
|
|
871
933
|
}
|
|
872
934
|
return nodes;
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
|
|
935
|
+
}
|
|
936
|
+
nodeIdToGameObjectId(nodeId) {
|
|
937
|
+
const node = this.nodes[nodeId];
|
|
876
938
|
if (!node)
|
|
877
939
|
return '';
|
|
878
|
-
|
|
940
|
+
const objectId = editor2d_1.Editor2dNode.getNodePath(node);
|
|
879
941
|
return objectId;
|
|
880
|
-
}
|
|
942
|
+
}
|
|
881
943
|
/**
|
|
882
944
|
* 获取游戏对象
|
|
883
945
|
* @param nodeId
|
|
884
946
|
*/
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
947
|
+
getGameObjectById(nodeId) {
|
|
948
|
+
const objectId = this.nodeIdToGameObjectId(nodeId);
|
|
949
|
+
const game = this.engineService.getGameWidgetByUri(this.uri);
|
|
888
950
|
if (game) {
|
|
889
|
-
|
|
951
|
+
const scene = game.getCurrentScene();
|
|
890
952
|
if (scene) {
|
|
891
953
|
return scene.gameObjectStore.get(objectId);
|
|
892
954
|
}
|
|
893
955
|
}
|
|
894
|
-
}
|
|
956
|
+
}
|
|
895
957
|
/**
|
|
896
958
|
* 位置移动
|
|
897
959
|
* @param nodes
|
|
898
960
|
* @param type
|
|
899
961
|
* @param delta
|
|
900
962
|
*/
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
if (delta === void 0) { delta = 1; }
|
|
904
|
-
nodes = nodes.filter(function (node) { return node.position; });
|
|
963
|
+
positionMove(nodes, type, delta = 1) {
|
|
964
|
+
nodes = nodes.filter(node => node.position);
|
|
905
965
|
if (nodes.length === 0)
|
|
906
966
|
return;
|
|
907
|
-
|
|
908
|
-
|
|
967
|
+
let moveType = 'x';
|
|
968
|
+
let moveDelta = delta;
|
|
909
969
|
switch (type) {
|
|
910
970
|
case 'left':
|
|
911
971
|
moveDelta = -moveDelta;
|
|
@@ -920,58 +980,51 @@ var Editor2dDocument = /** @class */ (function (_super) {
|
|
|
920
980
|
moveType = 'y';
|
|
921
981
|
break;
|
|
922
982
|
}
|
|
923
|
-
nodes.forEach(
|
|
924
|
-
|
|
925
|
-
|
|
983
|
+
nodes.forEach(node => {
|
|
984
|
+
const position = node.position;
|
|
985
|
+
const newPosition = {
|
|
926
986
|
x: moveType === 'x' ? position.x + moveDelta : position.x,
|
|
927
987
|
y: moveType === 'y' ? position.y + moveDelta : position.y,
|
|
928
988
|
};
|
|
929
|
-
|
|
989
|
+
this.updateNode(node, { position: newPosition, }, true, true, true);
|
|
930
990
|
});
|
|
931
991
|
this.fireContentChanged(nodes, 'update');
|
|
932
|
-
}
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
get: function () {
|
|
948
|
-
return this._saveVersion;
|
|
949
|
-
},
|
|
950
|
-
enumerable: false,
|
|
951
|
-
configurable: true
|
|
952
|
-
});
|
|
953
|
-
Editor2dDocument.prototype.findIndex = function (node) {
|
|
954
|
-
var parent = node.parent;
|
|
992
|
+
}
|
|
993
|
+
get snaplines() {
|
|
994
|
+
return this._snaplines;
|
|
995
|
+
}
|
|
996
|
+
set snaplines(lines) {
|
|
997
|
+
this._snaplines = lines;
|
|
998
|
+
if (JSON.stringify(lines) !== JSON.stringify(this._snaplines)) {
|
|
999
|
+
this.fireContentChanged([], 'update');
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
get saveVersion() {
|
|
1003
|
+
return this._saveVersion;
|
|
1004
|
+
}
|
|
1005
|
+
findIndex(node) {
|
|
1006
|
+
const parent = node.parent;
|
|
955
1007
|
if (parent) {
|
|
956
1008
|
return parent.children.indexOf(node);
|
|
957
1009
|
}
|
|
958
1010
|
return 0;
|
|
959
|
-
}
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
1011
|
+
}
|
|
1012
|
+
};
|
|
1013
|
+
Editor2dDocument = __decorate([
|
|
1014
|
+
(0, inversify_1.injectable)(),
|
|
1015
|
+
__param(0, (0, inversify_1.inject)(connection_1.MessageService)),
|
|
1016
|
+
__param(1, (0, inversify_1.inject)(editor2d_1.Editor2dModelOptions)),
|
|
1017
|
+
__param(2, (0, inversify_1.inject)(resource_1.ResourceProvider)),
|
|
1018
|
+
__param(3, (0, inversify_1.inject)(browser_1.ResourceAutoSaveService)),
|
|
1019
|
+
__param(4, (0, inversify_1.inject)(workspace_2d_1.WorkspaceResourceService)),
|
|
1020
|
+
__param(5, (0, inversify_1.inject)(render_engine_ide_1.RenderEngineIDEService)),
|
|
1021
|
+
__param(6, (0, inversify_1.inject)(app_config_1.AppConfigService)),
|
|
1022
|
+
__param(7, (0, inversify_1.inject)(exports.Editor2dComponentProvider)),
|
|
1023
|
+
__param(7, (0, inversify_1.optional)()),
|
|
1024
|
+
__metadata("design:paramtypes", [connection_1.MessageService, Object, Function, browser_1.ResourceAutoSaveService,
|
|
1025
|
+
workspace_2d_1.WorkspaceResourceService,
|
|
1026
|
+
render_engine_ide_1.RenderEngineIDEService,
|
|
1027
|
+
app_config_1.AppConfigService, Object])
|
|
1028
|
+
], Editor2dDocument);
|
|
976
1029
|
exports.Editor2dDocument = Editor2dDocument;
|
|
977
1030
|
//# sourceMappingURL=editor2d-document.js.map
|