sunrize 1.7.29 → 1.7.31
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/package.json +6 -45
- package/src/Application/Document.js +12 -0
- package/src/Editors/Library.js +5 -3
- package/src/Editors/NodeList.js +2 -6
- package/src/Editors/OutlineView.js +93 -53
- package/src/Tools/Core/X3DNodeTool.js +5 -2
- package/src/Undo/Editor.js +166 -88
- package/src/assets/Entitlements.plist +24 -0
- package/src/assets/Info.plist +8 -8
- package/src/assets/themes/default-template.css +5 -3
- package/src/assets/themes/default.css +5 -3
- package/src/Application/Traverse.js +0 -368
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sunrize",
|
|
3
3
|
"productName": "Sunrize X3D Editor",
|
|
4
|
-
"version": "1.7.
|
|
4
|
+
"version": "1.7.31",
|
|
5
5
|
"description": "A Multi-Platform X3D Editor",
|
|
6
6
|
"main": "src/main.js",
|
|
7
7
|
"bin": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"postgithub": "npm i -P electron",
|
|
26
26
|
"predocs": "rm -f -r docs/_site/",
|
|
27
27
|
"docs": "cd docs && bundle exec jekyll serve --ssl-key ssl/server.key --ssl-cert ssl/server.crt --incremental --host=`ipconfig getifaddr en0`",
|
|
28
|
-
"docs-install": "cd docs && bundle install",
|
|
28
|
+
"docs-install": "cd docs && gem install bundler && bundle install",
|
|
29
29
|
"docs-update": "cd docs && bundle update",
|
|
30
30
|
"merge-development": "sh build/merge-development.sh",
|
|
31
31
|
"make-x_ite-for-sunrize": "sh build/make-x_ite-for-sunrize.sh"
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"dependencies": {
|
|
91
91
|
"capitalize": "^2.0.4",
|
|
92
92
|
"console": "^0.7.2",
|
|
93
|
-
"electron": "^33.0
|
|
93
|
+
"electron": "^33.2.0",
|
|
94
94
|
"electron-prompt": "^1.7.0",
|
|
95
95
|
"electron-squirrel-startup": "^1.0.1",
|
|
96
96
|
"electron-tabs": "^1.0.4",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"jquery-ui-dist": "^1.13.3",
|
|
100
100
|
"jstree": "^3.3.17",
|
|
101
101
|
"material-icons": "^1.13.12",
|
|
102
|
-
"material-symbols": "^0.
|
|
102
|
+
"material-symbols": "^0.27.0",
|
|
103
103
|
"md5": "^2.3.0",
|
|
104
104
|
"mime-types": "^2.1.35",
|
|
105
105
|
"monaco-editor": "^0.50.0",
|
|
@@ -109,46 +109,7 @@
|
|
|
109
109
|
"string-similarity": "^4.0.4",
|
|
110
110
|
"tweakpane": "^3.1.10",
|
|
111
111
|
"update-electron-app": "^3.0.0",
|
|
112
|
-
"x_ite": "^10.5.
|
|
113
|
-
|
|
114
|
-
"config": {
|
|
115
|
-
"forge": {
|
|
116
|
-
"packagerConfig": {
|
|
117
|
-
"icon": "./src/assets/images/icon.png",
|
|
118
|
-
"dir": "./src",
|
|
119
|
-
"ignore": "^/(?!src|package\\.json|node_modules)",
|
|
120
|
-
"certificateFile": "./build/certificate.pfx",
|
|
121
|
-
"certificatePassword": "CREATE3000",
|
|
122
|
-
"extendInfo": "./src/assets/Info.plist",
|
|
123
|
-
"osxSign": {}
|
|
124
|
-
},
|
|
125
|
-
"makers": [
|
|
126
|
-
{
|
|
127
|
-
"name": "@electron-forge/maker-squirrel"
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"name": "@electron-forge/maker-dmg"
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"name": "@electron-forge/maker-deb"
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"name": "@electron-forge/maker-rpm"
|
|
137
|
-
}
|
|
138
|
-
],
|
|
139
|
-
"publishers": [
|
|
140
|
-
{
|
|
141
|
-
"name": "@electron-forge/publisher-github",
|
|
142
|
-
"config": {
|
|
143
|
-
"repository": {
|
|
144
|
-
"owner": "create3000",
|
|
145
|
-
"name": "sunrize"
|
|
146
|
-
},
|
|
147
|
-
"prerelease": false,
|
|
148
|
-
"draft": false
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
]
|
|
152
|
-
}
|
|
112
|
+
"x_ite": "^10.5.11",
|
|
113
|
+
"x3d-traverse": "^1.0.2"
|
|
153
114
|
}
|
|
154
115
|
}
|
|
@@ -161,8 +161,20 @@ module .exports = class Document extends Interface
|
|
|
161
161
|
await this .browser .loadComponents (this .browser .getProfile ("Full"),
|
|
162
162
|
this .browser .getComponent ("X_ITE"));
|
|
163
163
|
|
|
164
|
+
// Modify nodes.
|
|
165
|
+
|
|
164
166
|
this .browser .updateConcreteNode (require ("../Components/Grouping/StaticGroup"));
|
|
165
167
|
|
|
168
|
+
X3D .NurbsSweptSurface .prototype .traverse = function (type, renderObject)
|
|
169
|
+
{
|
|
170
|
+
this .getTrajectoryCurve () ?.traverse (type, renderObject);
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
X3D .NurbsSwungSurface .prototype .traverse = function (type, renderObject)
|
|
174
|
+
{
|
|
175
|
+
this .getTrajectoryCurve () ?.traverse (type, renderObject);
|
|
176
|
+
};
|
|
177
|
+
|
|
166
178
|
// Restore
|
|
167
179
|
|
|
168
180
|
await this .restoreFile ();
|
package/src/Editors/Library.js
CHANGED
|
@@ -7,7 +7,7 @@ const
|
|
|
7
7
|
Dialog = require ("../Controls/Dialog"),
|
|
8
8
|
Editor = require ("../Undo/Editor"),
|
|
9
9
|
UndoManager = require ("../Undo/UndoManager"),
|
|
10
|
-
Traverse = require ("
|
|
10
|
+
Traverse = require ("x3d-traverse") (X3D),
|
|
11
11
|
_ = require ("../Application/GetText");
|
|
12
12
|
|
|
13
13
|
module .exports = new class Library extends Dialog
|
|
@@ -209,8 +209,10 @@ module .exports = new class Library extends Dialog
|
|
|
209
209
|
|
|
210
210
|
if (this .browser .getBrowserOption ("ColorSpace") === "LINEAR")
|
|
211
211
|
{
|
|
212
|
-
Traverse .traverse (node, Traverse .ROOT_NODES
|
|
212
|
+
for (const object of Traverse .traverse (node, Traverse .ROOT_NODES))
|
|
213
213
|
{
|
|
214
|
+
const node = object .getValue ();
|
|
215
|
+
|
|
214
216
|
for (const field of node .getFields ())
|
|
215
217
|
{
|
|
216
218
|
switch (field .getType ())
|
|
@@ -225,7 +227,7 @@ module .exports = new class Library extends Dialog
|
|
|
225
227
|
break;
|
|
226
228
|
}
|
|
227
229
|
}
|
|
228
|
-
}
|
|
230
|
+
}
|
|
229
231
|
}
|
|
230
232
|
|
|
231
233
|
switch (field ?.getType ())
|
package/src/Editors/NodeList.js
CHANGED
|
@@ -4,7 +4,7 @@ const
|
|
|
4
4
|
$ = require ("jquery"),
|
|
5
5
|
X3D = require ("../X3D"),
|
|
6
6
|
Interface = require ("../Application/Interface"),
|
|
7
|
-
Traverse = require ("
|
|
7
|
+
Traverse = require ("x3d-traverse") (X3D),
|
|
8
8
|
_ = require ("../Application/GetText");
|
|
9
9
|
|
|
10
10
|
module .exports = class NodeList extends Interface
|
|
@@ -92,11 +92,7 @@ module .exports = class NodeList extends Interface
|
|
|
92
92
|
|
|
93
93
|
getNodes ()
|
|
94
94
|
{
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
Traverse .traverse (this .executionContext, Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES, node => nodes .push (node));
|
|
98
|
-
|
|
99
|
-
return nodes;
|
|
95
|
+
return Array .from (this .executionContext .traverse (Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES), node => node instanceof X3D .SFNode ? node .getValue () : node);
|
|
100
96
|
}
|
|
101
97
|
|
|
102
98
|
getName (node)
|
|
@@ -8,7 +8,7 @@ const
|
|
|
8
8
|
X3D = require ("../X3D"),
|
|
9
9
|
Interface = require ("../Application/Interface"),
|
|
10
10
|
ActionKeys = require ("../Application/ActionKeys"),
|
|
11
|
-
Traverse = require ("
|
|
11
|
+
Traverse = require ("x3d-traverse") (X3D),
|
|
12
12
|
X3DUOM = require ("../Bits/X3DUOM"),
|
|
13
13
|
_ = require ("../Application/GetText");
|
|
14
14
|
|
|
@@ -3144,76 +3144,96 @@ module .exports = class OutlineView extends Interface
|
|
|
3144
3144
|
{
|
|
3145
3145
|
// Hide all X3DShapeNode nodes and show all other nodes.
|
|
3146
3146
|
|
|
3147
|
-
|
|
3147
|
+
for (const object of this .executionContext .traverse (Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES))
|
|
3148
3148
|
{
|
|
3149
|
+
if (!(object instanceof X3D .SFNode))
|
|
3150
|
+
continue;
|
|
3151
|
+
|
|
3152
|
+
const node = object .getValue ();
|
|
3153
|
+
|
|
3149
3154
|
if (!node .setHidden)
|
|
3150
|
-
|
|
3155
|
+
continue;
|
|
3151
3156
|
|
|
3152
|
-
node .setHidden (node .getType () .includes (X3D .X3DConstants .X3DShapeNode))
|
|
3157
|
+
node .setHidden (node .getType () .includes (X3D .X3DConstants .X3DShapeNode));
|
|
3153
3158
|
|
|
3154
3159
|
this .sceneGraph .find (`.node[node-id=${node .getId ()}]`)
|
|
3155
3160
|
.find ("> .item .toggle-visibility")
|
|
3156
3161
|
.removeClass (["on", "off"])
|
|
3157
3162
|
.addClass (node .isHidden () ? "off" : "on")
|
|
3158
|
-
.text (node .isHidden () ? "visibility_off" : "visibility")
|
|
3159
|
-
}
|
|
3163
|
+
.text (node .isHidden () ? "visibility_off" : "visibility");
|
|
3164
|
+
}
|
|
3160
3165
|
|
|
3161
3166
|
// Show all nodes in selection.
|
|
3162
3167
|
|
|
3163
3168
|
const selection = require ("../Application/Selection");
|
|
3164
3169
|
|
|
3165
|
-
Traverse .traverse (selection .nodes, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES
|
|
3170
|
+
for (const object of Traverse .traverse (selection .nodes, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES))
|
|
3166
3171
|
{
|
|
3172
|
+
if (!(object instanceof X3D .SFNode))
|
|
3173
|
+
continue;
|
|
3174
|
+
|
|
3175
|
+
const node = object .getValue ();
|
|
3176
|
+
|
|
3167
3177
|
if (!node .setHidden)
|
|
3168
|
-
|
|
3178
|
+
continue;
|
|
3169
3179
|
|
|
3170
3180
|
if (!node .getType () .includes (X3D .X3DConstants .X3DShapeNode))
|
|
3171
|
-
|
|
3181
|
+
continue;
|
|
3172
3182
|
|
|
3173
|
-
node .setHidden (false)
|
|
3183
|
+
node .setHidden (false);
|
|
3174
3184
|
|
|
3175
3185
|
this .sceneGraph .find (`.node[node-id=${node .getId ()}]`)
|
|
3176
3186
|
.find ("> .item .toggle-visibility")
|
|
3177
3187
|
.removeClass ("off")
|
|
3178
3188
|
.addClass ("on")
|
|
3179
|
-
.text ("visibility")
|
|
3180
|
-
}
|
|
3189
|
+
.text ("visibility");
|
|
3190
|
+
}
|
|
3181
3191
|
}
|
|
3182
3192
|
|
|
3183
3193
|
showSelectedObjects ()
|
|
3184
3194
|
{
|
|
3185
3195
|
const selection = require ("../Application/Selection")
|
|
3186
3196
|
|
|
3187
|
-
Traverse .traverse (selection .nodes .length ? selection .nodes : this .executionContext, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES
|
|
3197
|
+
for (const object of Traverse .traverse (selection .nodes .length ? selection .nodes : this .executionContext, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES))
|
|
3188
3198
|
{
|
|
3199
|
+
if (!(object instanceof X3D .SFNode))
|
|
3200
|
+
continue;
|
|
3201
|
+
|
|
3202
|
+
const node = object .getValue ();
|
|
3203
|
+
|
|
3189
3204
|
if (!node .setHidden)
|
|
3190
|
-
|
|
3205
|
+
continue;
|
|
3191
3206
|
|
|
3192
|
-
node .setHidden (false)
|
|
3207
|
+
node .setHidden (false);
|
|
3193
3208
|
|
|
3194
3209
|
this .sceneGraph .find (`.node[node-id=${node .getId ()}]`)
|
|
3195
3210
|
.find ("> .item .toggle-visibility")
|
|
3196
3211
|
.removeClass ("off")
|
|
3197
3212
|
.addClass ("on")
|
|
3198
|
-
.text ("visibility")
|
|
3199
|
-
}
|
|
3213
|
+
.text ("visibility");
|
|
3214
|
+
}
|
|
3200
3215
|
}
|
|
3201
3216
|
|
|
3202
3217
|
showAllObjects ()
|
|
3203
3218
|
{
|
|
3204
|
-
|
|
3219
|
+
for (const object of this .executionContext .traverse (Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES))
|
|
3205
3220
|
{
|
|
3221
|
+
if (!(object instanceof X3D .SFNode))
|
|
3222
|
+
continue;
|
|
3223
|
+
|
|
3224
|
+
const node = object .getValue ();
|
|
3225
|
+
|
|
3206
3226
|
if (!node .setHidden)
|
|
3207
|
-
|
|
3227
|
+
continue;
|
|
3208
3228
|
|
|
3209
|
-
node .setHidden (false)
|
|
3229
|
+
node .setHidden (false);
|
|
3210
3230
|
|
|
3211
3231
|
this .sceneGraph .find (`.node[node-id=${node .getId ()}]`)
|
|
3212
3232
|
.find ("> .item .toggle-visibility")
|
|
3213
3233
|
.removeClass ("off")
|
|
3214
3234
|
.addClass ("on")
|
|
3215
|
-
.text ("visibility")
|
|
3216
|
-
}
|
|
3235
|
+
.text ("visibility");
|
|
3236
|
+
}
|
|
3217
3237
|
}
|
|
3218
3238
|
|
|
3219
3239
|
selectNone (event)
|
|
@@ -3637,16 +3657,15 @@ module .exports = class OutlineView extends Interface
|
|
|
3637
3657
|
|
|
3638
3658
|
flags |= Traverse .IMPORTED_NODES;
|
|
3639
3659
|
|
|
3640
|
-
const
|
|
3641
|
-
|
|
3642
|
-
for (const hierarchy of hierarchies)
|
|
3660
|
+
for (const hierarchy of this .executionContext .find (object, flags))
|
|
3643
3661
|
{
|
|
3644
3662
|
hierarchy .shift (); // execution context
|
|
3663
|
+
hierarchy .shift (); // rootNode | protos ...
|
|
3645
3664
|
|
|
3646
3665
|
if (!expandObject)
|
|
3647
3666
|
hierarchy .pop ();
|
|
3648
3667
|
|
|
3649
|
-
this .expandHierarchy (hierarchy, this .sceneGraph);
|
|
3668
|
+
this .expandHierarchy (hierarchy, this .sceneGraph, this .executionContext);
|
|
3650
3669
|
break;
|
|
3651
3670
|
}
|
|
3652
3671
|
}
|
|
@@ -3658,46 +3677,67 @@ module .exports = class OutlineView extends Interface
|
|
|
3658
3677
|
"X3DExecutionContext": "scene",
|
|
3659
3678
|
};
|
|
3660
3679
|
|
|
3661
|
-
expandHierarchy (hierarchy, parent)
|
|
3680
|
+
expandHierarchy (hierarchy, parent, parentObject)
|
|
3662
3681
|
{
|
|
3663
|
-
|
|
3682
|
+
let object = hierarchy .shift ();
|
|
3664
3683
|
|
|
3665
|
-
if (
|
|
3684
|
+
if (object === undefined)
|
|
3666
3685
|
return;
|
|
3667
3686
|
|
|
3668
|
-
|
|
3687
|
+
switch (true)
|
|
3669
3688
|
{
|
|
3670
|
-
|
|
3671
|
-
|
|
3672
|
-
if (element .length === 0)
|
|
3689
|
+
case typeof object === "string":
|
|
3673
3690
|
{
|
|
3674
|
-
|
|
3675
|
-
parent .jstree ("open_node", parent);
|
|
3691
|
+
object = parentObject .getField (object);
|
|
3676
3692
|
|
|
3677
|
-
element = parent .find (`.field[field-id=${object .getId ()}]`);
|
|
3678
|
-
}
|
|
3693
|
+
let element = parent .find (`.field[field-id=${object .getId ()}]`);
|
|
3679
3694
|
|
|
3680
|
-
|
|
3695
|
+
if (element .length === 0)
|
|
3696
|
+
{
|
|
3697
|
+
parent .jstree ("close_node", parent);
|
|
3698
|
+
parent .jstree ("open_node", parent);
|
|
3681
3699
|
|
|
3682
|
-
|
|
3683
|
-
|
|
3684
|
-
else if (object instanceof X3D .X3DImportedNode)
|
|
3685
|
-
{
|
|
3686
|
-
const element = parent .find (`.imported-node[imported-node-id=${object .getId ()}]`);
|
|
3700
|
+
element = parent .find (`.field[field-id=${object .getId ()}]`);
|
|
3701
|
+
}
|
|
3687
3702
|
|
|
3688
|
-
|
|
3703
|
+
element .jstree ("open_node", element);
|
|
3689
3704
|
|
|
3690
|
-
|
|
3691
|
-
|
|
3692
|
-
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
3696
|
-
|
|
3705
|
+
this .expandHierarchy (hierarchy, element);
|
|
3706
|
+
break;
|
|
3707
|
+
}
|
|
3708
|
+
case typeof object === "number":
|
|
3709
|
+
{
|
|
3710
|
+
this .expandHierarchy (hierarchy, parent);
|
|
3711
|
+
break;
|
|
3712
|
+
}
|
|
3713
|
+
case object instanceof X3D .X3DImportedNode:
|
|
3714
|
+
{
|
|
3715
|
+
const element = parent .find (`.imported-node[imported-node-id=${object .getId ()}]`);
|
|
3697
3716
|
|
|
3698
|
-
|
|
3717
|
+
element .jstree ("open_node", element);
|
|
3718
|
+
|
|
3719
|
+
this .expandHierarchy (hierarchy, element);
|
|
3720
|
+
break;
|
|
3721
|
+
}
|
|
3722
|
+
case object instanceof X3D .SFNode:
|
|
3723
|
+
{
|
|
3724
|
+
object = object .getValue ();
|
|
3725
|
+
// Proceed with next case:
|
|
3726
|
+
}
|
|
3727
|
+
default: // X3DBaseNode
|
|
3728
|
+
{
|
|
3729
|
+
const
|
|
3730
|
+
objectClass = OutlineView .objectClasses [object .getTypeName ()] || "node",
|
|
3731
|
+
element = parent .find (`.${objectClass}[node-id=${object .getId ()}]`);
|
|
3732
|
+
|
|
3733
|
+
element .jstree ("open_node", element);
|
|
3734
|
+
|
|
3735
|
+
if (object instanceof X3D .X3DExecutionContext)
|
|
3736
|
+
hierarchy .shift (); // rootNode | protos ...
|
|
3699
3737
|
|
|
3700
|
-
|
|
3738
|
+
this .expandHierarchy (hierarchy, element, object);
|
|
3739
|
+
break;
|
|
3740
|
+
}
|
|
3701
3741
|
}
|
|
3702
3742
|
}
|
|
3703
3743
|
|
|
@@ -5,7 +5,7 @@ const
|
|
|
5
5
|
X3D = require ("../../X3D"),
|
|
6
6
|
Editor = require ("../../Undo/Editor"),
|
|
7
7
|
UndoManager = require ("../../Undo/UndoManager"),
|
|
8
|
-
Traverse = require ("
|
|
8
|
+
Traverse = require ("x3d-traverse") (X3D),
|
|
9
9
|
path = require ("path"),
|
|
10
10
|
url = require ("url"),
|
|
11
11
|
_ = require ("../../Application/GetText");
|
|
@@ -218,7 +218,10 @@ class X3DNodeTool extends X3DBaseTool
|
|
|
218
218
|
|
|
219
219
|
for (const tool of this .#tools)
|
|
220
220
|
{
|
|
221
|
-
Traverse .traverse (this [tool], Traverse .ROOT_NODES | Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES
|
|
221
|
+
for (const node of Traverse .traverse (this [tool], Traverse .ROOT_NODES | Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES))
|
|
222
|
+
{
|
|
223
|
+
nodesToDispose .push (node instanceof X3D .SFNode ? node .getValue () : node);
|
|
224
|
+
}
|
|
222
225
|
}
|
|
223
226
|
|
|
224
227
|
for (const node of nodesToDispose .filter (node => !this .#externalNodes .has (node)))
|