@gedit/editor-2d 0.2.47 → 0.2.49
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/model/editor2d-document.d.ts +21 -7
- package/lib/browser/model/editor2d-document.d.ts.map +1 -1
- package/lib/browser/model/editor2d-document.js +169 -14
- package/lib/browser/model/editor2d-document.js.map +1 -1
- package/lib/browser/playground/canvas-draw.d.ts +6 -2
- package/lib/browser/playground/canvas-draw.d.ts.map +1 -1
- package/lib/browser/playground/canvas-draw.js +148 -26
- package/lib/browser/playground/canvas-draw.js.map +1 -1
- package/lib/browser/playground/canvas-layer.d.ts +2 -2
- package/lib/browser/playground/canvas-layer.d.ts.map +1 -1
- package/lib/browser/playground/canvas-layer.js +57 -41
- package/lib/browser/playground/canvas-layer.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 +19 -2
- package/lib/browser/playground/playground-contribution.js.map +1 -1
- package/lib/browser/playground/selection-entity-manager.d.ts +1 -1
- package/lib/browser/playground/selection-entity-manager.d.ts.map +1 -1
- package/lib/browser/playground/selection-entity-manager.js +19 -3
- package/lib/browser/playground/selection-entity-manager.js.map +1 -1
- package/lib/browser/utils/snapshot.js +1 -1
- package/lib/browser/utils/snapshot.js.map +1 -1
- package/package.json +9 -9
- package/src/browser/model/editor2d-document.ts +183 -14
- package/src/browser/playground/canvas-draw.ts +308 -94
- package/src/browser/playground/canvas-layer.ts +41 -25
- package/src/browser/playground/playground-contribution.ts +15 -3
- package/src/browser/playground/selection-entity-manager.tsx +17 -3
- package/src/browser/style/index.less +6 -0
- package/src/browser/utils/snapshot.ts +1 -1
|
@@ -88,6 +88,7 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
88
88
|
() => !!this.documentEntity.config?.visible
|
|
89
89
|
);
|
|
90
90
|
this.canvasDrawer = new CanvasDraw({
|
|
91
|
+
entityManager: this.entityManager,
|
|
91
92
|
host: this.node,
|
|
92
93
|
renderEngine: this.context.renderEngine,
|
|
93
94
|
assetsURI: this.getAssetsURI(),
|
|
@@ -105,6 +106,14 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
105
106
|
]);
|
|
106
107
|
// this.entityManager.getEntity<RulerConfigEntity>(RulerConfigEntity)?.customizeOriginClick(this.config.scrollPageBoundsToCenter.bind(this));
|
|
107
108
|
this.config.loading = true;
|
|
109
|
+
if (this.stateService) {
|
|
110
|
+
this.toDispose.push(this.stateService?.onStateChanged(state => {
|
|
111
|
+
// 布局完成后再归位画布;
|
|
112
|
+
if (state === 'ready') {
|
|
113
|
+
this.tryToResizeToCenter();
|
|
114
|
+
}
|
|
115
|
+
}));
|
|
116
|
+
}
|
|
108
117
|
}
|
|
109
118
|
onContainerInitOrigin(
|
|
110
119
|
entity?: Editor2dEntity,
|
|
@@ -148,28 +157,26 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
148
157
|
}
|
|
149
158
|
}
|
|
150
159
|
};
|
|
151
|
-
onUpdateEntity(update: boolean)
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}, 150);
|
|
166
|
-
}
|
|
160
|
+
onUpdateEntity = debounce((update: boolean) => {
|
|
161
|
+
const updateList = getListData(this.updateList);
|
|
162
|
+
updateList.forEach(item => {
|
|
163
|
+
if (item.disposed) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
// console.log('------------------updateddddddddddddddd-----------', item);
|
|
167
|
+
this.selectionEntityManager.updateEntity(item.id, item, this.config.config.zoom);
|
|
168
|
+
const entity = this.selectionEntityManager.nodeEntitiesCache.get(item.id);
|
|
169
|
+
this.onContainerInitOrigin(entity, update);
|
|
170
|
+
});
|
|
171
|
+
this.updateList = [];
|
|
172
|
+
});
|
|
173
|
+
|
|
167
174
|
onGameObjectChange(e: GameObjectChangeEvent): void {
|
|
168
|
-
const { gameObject, state } = e;
|
|
175
|
+
const { gameObject, state, node } = e;
|
|
169
176
|
switch (e.type) {
|
|
170
177
|
case GameObjectEventType.CREATE:
|
|
171
|
-
this.document?.updateNode(
|
|
172
|
-
this.selectionEntityManager.createEntity(gameObject.id,
|
|
178
|
+
this.document?.updateNode(node, { error: undefined });
|
|
179
|
+
this.selectionEntityManager.createEntity(gameObject.id, node, gameObject!, !!state?.selectable, !!state?.adsorbable);
|
|
173
180
|
break;
|
|
174
181
|
case GameObjectEventType.DESTROY:
|
|
175
182
|
this.selectionEntityManager.removeEntity(gameObject.id);
|
|
@@ -179,12 +186,12 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
179
186
|
// console.log('------------------update-----------', gameObject.name);
|
|
180
187
|
if (!this.updateList.includes(gameObject)) {
|
|
181
188
|
this.updateList.push(gameObject);
|
|
182
|
-
this.nodeCache.set(gameObject.id,
|
|
189
|
+
this.nodeCache.set(gameObject.id, node);
|
|
183
190
|
}
|
|
184
191
|
this.onUpdateEntity(true);
|
|
185
192
|
break;
|
|
186
193
|
case GameObjectEventType.ERROR:
|
|
187
|
-
this.document?.updateNode(
|
|
194
|
+
this.document?.updateNode(node, {error: e.error});
|
|
188
195
|
break;
|
|
189
196
|
}
|
|
190
197
|
this.context.onCanvasDataChangedEmitter.fire(this.canvasDrawer!);
|
|
@@ -207,7 +214,7 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
207
214
|
if (!this.config.loading && !reload) return;
|
|
208
215
|
if (loaded || allCount <= currentCount || allCount === 0) {
|
|
209
216
|
this.config.loading = false;
|
|
210
|
-
this.tryToResizeToCenter();
|
|
217
|
+
// this.tryToResizeToCenter();
|
|
211
218
|
this.node.classList.add('ready');
|
|
212
219
|
this.loaded();
|
|
213
220
|
} else {
|
|
@@ -236,6 +243,15 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
236
243
|
onZoom = debounce(() => {
|
|
237
244
|
const config = this.config.config;
|
|
238
245
|
this.canvasDrawer?.refreshScale(true, config.zoom);
|
|
246
|
+
const selectedEntities = this.selectionEntityManager.getSelectedEntities();
|
|
247
|
+
if (this.document?.engineName === 'dom' && selectedEntities?.length) {
|
|
248
|
+
selectedEntities.forEach(c => {
|
|
249
|
+
const {gameObject} = c;
|
|
250
|
+
if (gameObject) {
|
|
251
|
+
this.selectionEntityManager.updateEntity(gameObject.id, gameObject, this.config.config.zoom);
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
}
|
|
239
255
|
});
|
|
240
256
|
onResize = debounce((size: PipelineDimension) => {
|
|
241
257
|
const renderWidget = this.canvasDrawer?.renderWidget;
|
|
@@ -254,11 +270,11 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
254
270
|
private currentRectangle: Rectangle | undefined;
|
|
255
271
|
// private currentResolution = 1;
|
|
256
272
|
|
|
257
|
-
tryToResizeToCenter()
|
|
273
|
+
tryToResizeToCenter = debounce(() => {
|
|
258
274
|
const {visible } = this.documentEntity.config;
|
|
259
275
|
// const resolution = appConfig?.resolution || 1;
|
|
260
276
|
const size = this.canvasDrawer?.getSceneSize();
|
|
261
|
-
if (!visible || !size || this.config.
|
|
277
|
+
if (!visible || !size || this.config.config.width === 0 || this.config.config.height === 0) return;
|
|
262
278
|
const newRect = new Rectangle(0, 0, size.width, size.height);
|
|
263
279
|
if (!this.currentRectangle || !this.currentRectangle.isEqual(newRect)) {
|
|
264
280
|
this.currentRectangle = newRect;
|
|
@@ -268,7 +284,7 @@ export class CanvasLayer extends Layer<PlaygroundContext2d> {
|
|
|
268
284
|
this.config.scrollPageBoundsToCenter(true, 16, !this.context.options.isTemplate)
|
|
269
285
|
.then(() => this.onZoom());
|
|
270
286
|
}
|
|
271
|
-
}
|
|
287
|
+
}, 100); // 打开时会有一次 tag 大小的视图,宽是 98px,,dom 下没有引擎加载,会响应 98 宽,加 100 ms 延时
|
|
272
288
|
draw(): void {
|
|
273
289
|
const config = this.documentEntity.config;
|
|
274
290
|
const document = config.document;
|
|
@@ -18,7 +18,7 @@ import { HistoryService } from '@gedit/history';
|
|
|
18
18
|
import { Editor2dModelOptions, Editor2dNode } from '../model/editor2d';
|
|
19
19
|
import { ContextMenuRenderer } from '@gedit/layout';
|
|
20
20
|
import { CommandService } from '@gedit/command';
|
|
21
|
-
import { CommonCommands } from '@gedit/application-common/lib/browser';
|
|
21
|
+
import { CommonCommands, FrontendApplicationStateService } from '@gedit/application-common/lib/browser';
|
|
22
22
|
import { ExtendEditLayer, EXTEND_EDIT_STATE } from './extend-edit-layer';
|
|
23
23
|
import { Editor2dSelection } from '../model/editor2d-selection';
|
|
24
24
|
|
|
@@ -32,6 +32,7 @@ export class PlaygroundContribution2d implements PlaygroundContribution {
|
|
|
32
32
|
@inject(ContextMenuRenderer) readonly menuRender: ContextMenuRenderer;
|
|
33
33
|
@inject(Editor2dSelection) readonly editor2dSelection: Editor2dSelection;
|
|
34
34
|
@inject(PathPointSelectionService) readonly pathPointSelectionService: PathPointSelectionService;
|
|
35
|
+
@inject(FrontendApplicationStateService) readonly stateService: FrontendApplicationStateService;
|
|
35
36
|
registerPlayground(registry: PlaygroundRegistry): void {
|
|
36
37
|
registry.registerLayer(CanvasLayer);
|
|
37
38
|
registry.registerLayer(PathEditLayer);
|
|
@@ -110,8 +111,19 @@ export class PlaygroundContribution2d implements PlaygroundContribution {
|
|
|
110
111
|
percentageInfoVisible: false,
|
|
111
112
|
});
|
|
112
113
|
}
|
|
113
|
-
playground.getConfigEntity<SnaplineConfigEntity>(SnaplineConfigEntity)
|
|
114
|
-
|
|
114
|
+
const snaplineEntity = playground.getConfigEntity<SnaplineConfigEntity>(SnaplineConfigEntity);
|
|
115
|
+
snaplineEntity.updateConfig({
|
|
116
|
+
lines: [],
|
|
117
|
+
originlineVisible: this.appConfig.configData?.engine === 'dom' ? false : isComponent, // 是否隐藏原点线条,如果是组件模式则显示
|
|
118
|
+
});
|
|
119
|
+
this.stateService.onStateChanged(state => {
|
|
120
|
+
if (state === 'initialized_layout') {
|
|
121
|
+
// 部局完成后再是否显示中心线,pixi 组件用
|
|
122
|
+
snaplineEntity.updateConfig({
|
|
123
|
+
lines: [],
|
|
124
|
+
originlineVisible: this.appConfig.configData?.engine === 'dom' ? false : isComponent,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
115
127
|
});
|
|
116
128
|
playground.toDispose.push(
|
|
117
129
|
// TODO 放在这里处理会增加复杂度
|
|
@@ -120,6 +120,12 @@ export class SelectionEntityManager {
|
|
|
120
120
|
entity.nodeId = node.id;
|
|
121
121
|
entity.context = this.context;
|
|
122
122
|
entity.transform.sizeToScale = !!deco.sizeToScale;
|
|
123
|
+
if (deco.useComponentSceneSize) {
|
|
124
|
+
entity.transform.componentSceneSize = {
|
|
125
|
+
width: gameObject.data.scene?.width || 400,
|
|
126
|
+
height: gameObject.data.scene?.height || 400,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
123
129
|
|
|
124
130
|
this.setTransformMask(entity, nodePath, node);
|
|
125
131
|
// 切换选择框的类型,如圆形、矩形, 默认矩形
|
|
@@ -209,7 +215,7 @@ export class SelectionEntityManager {
|
|
|
209
215
|
entity.dispose();
|
|
210
216
|
}
|
|
211
217
|
}
|
|
212
|
-
updateEntity(nodePath: string, gameObject: GameObject): void {
|
|
218
|
+
updateEntity(nodePath: string, gameObject: GameObject, scale?: number): void {
|
|
213
219
|
const register = this.context.renderEngine.getGameObjectIDERegister(gameObject.scene.config.engine, gameObject.type);
|
|
214
220
|
const deco = register.decoration;
|
|
215
221
|
const entity = this.nodeEntitiesCache.get(nodePath);
|
|
@@ -225,7 +231,13 @@ export class SelectionEntityManager {
|
|
|
225
231
|
}
|
|
226
232
|
}
|
|
227
233
|
entity.transform.isContainer = !!deco.isContainer;
|
|
228
|
-
|
|
234
|
+
if (deco.useComponentSceneSize) {
|
|
235
|
+
entity.transform.componentSceneSize = {
|
|
236
|
+
width: gameObject.data.scene?.width || 400,
|
|
237
|
+
height: gameObject.data.scene?.height || 400,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
entity.update(register.getSelectionData(gameObject, scale));
|
|
229
241
|
entity.ignoreTransformChanged = false;
|
|
230
242
|
const sizeVisible = !this.isHidden(entity.node); // && (entity.transform.size.width > 0 && entity.transform.size.height > 0 || !!deco.isContainer);
|
|
231
243
|
const opacityZero = this.isOpacityZero(node);
|
|
@@ -239,7 +251,9 @@ export class SelectionEntityManager {
|
|
|
239
251
|
entity.selected = !!node?.selected;
|
|
240
252
|
// 更新zIndex, 每次都要更新,因为节点拖拽会导致所有的zIndex顺序错乱
|
|
241
253
|
entity.zIndex = gameObject.data.depth || 0;
|
|
242
|
-
|
|
254
|
+
// 更新是否隐藏
|
|
255
|
+
entity.transform.visible = !this.isHidden(gameObject.data as Editor2dNode);
|
|
256
|
+
this.setTransformMask(entity, nodePath, gameObject.data as Editor2dNode);
|
|
243
257
|
}
|
|
244
258
|
getSelectedEntities(): Editor2dEntity[] {
|
|
245
259
|
const selectedEntities: Editor2dEntity[] = [];
|
|
@@ -76,7 +76,7 @@ export class SnapshotCreator extends DisposableImpl {
|
|
|
76
76
|
if (!host) {
|
|
77
77
|
host = document.createElement('div');
|
|
78
78
|
host.className = 'gedit-editor-snapshots';
|
|
79
|
-
host.style.display = 'none';
|
|
79
|
+
// host.style.display = 'none';
|
|
80
80
|
document.body.appendChild(host);
|
|
81
81
|
}
|
|
82
82
|
this.drawer = new CanvasDraw({
|