sunrize 1.5.13 → 1.6.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.
Files changed (41) hide show
  1. package/package.json +5 -5
  2. package/src/Application/Application.js +2 -7
  3. package/src/Application/Dashboard.js +10 -10
  4. package/src/Application/DataStorage.js +177 -177
  5. package/src/Application/Document.js +72 -127
  6. package/src/Application/Interface.js +4 -0
  7. package/src/Application/Tabs.js +3 -3
  8. package/src/Controls/Dialog.js +3 -1
  9. package/src/Editors/BrowserFrame.js +171 -0
  10. package/src/Editors/OutlineEditor.js +149 -123
  11. package/src/Editors/OutlineRouteGraph.js +493 -493
  12. package/src/Editors/OutlineView.js +102 -64
  13. package/src/Editors/SceneProperties.js +137 -136
  14. package/src/Editors/ScriptEditor.js +1 -1
  15. package/src/Tools/Core/X3DNodeTool.js +66 -12
  16. package/src/Tools/Grids/AngleGridTool.js +0 -5
  17. package/src/Tools/Grids/AngleGridTool.x3d +1 -0
  18. package/src/Tools/Grids/AxonometricGrid.x3d +5 -5
  19. package/src/Tools/Grids/AxonometricGridTool.js +0 -5
  20. package/src/Tools/Grids/AxonometricGridTool.x3d +1 -0
  21. package/src/Tools/Grids/GridTool.js +0 -5
  22. package/src/Tools/Grids/GridTool.x3d +1 -0
  23. package/src/Tools/Grids/X3DGridNodeTool.js +131 -84
  24. package/src/Tools/Grouping/X3DTransformNodeTool.js +19 -21
  25. package/src/Tools/Grouping/X3DTransformNodeTool.x3d +20 -15
  26. package/src/Tools/Layering/X3DActiveLayerNodeTool.js +16 -21
  27. package/src/Tools/Lighting/DirectionalLightTool.js +32 -1
  28. package/src/Tools/Lighting/X3DLightNodeTool.x3d +4 -21
  29. package/src/Tools/Shaders/TextureShader.x3d +16 -3
  30. package/src/Tools/SnapTool/{SnapSourceTool.js → SnapSource.js} +2 -7
  31. package/src/Tools/SnapTool/SnapTarget.js +650 -0
  32. package/src/Tools/SnapTool/SnapTool.x3d +28 -27
  33. package/src/Tools/SnapTool/X3DSnapNodeTool.js +16 -15
  34. package/src/Tools/Sound/SoundTool.x3d +4 -21
  35. package/src/Tools/TextureProjection/X3DTextureProjectorNodeTool.x3d +19 -26
  36. package/src/Undo/Editor.js +185 -46
  37. package/src/assets/Info.plist +56 -56
  38. package/src/assets/themes/default-template.css +1 -0
  39. package/src/assets/themes/default.css +1 -0
  40. package/src/Editors/BrowserSize.js +0 -101
  41. package/src/Tools/SnapTool/SnapTargetTool.js +0 -20
@@ -1298,6 +1298,27 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1298
1298
  UndoManager .shared .endUndo ();
1299
1299
  }
1300
1300
 
1301
+ activateLayer (event)
1302
+ {
1303
+ event .preventDefault ();
1304
+ event .stopImmediatePropagation ();
1305
+
1306
+ const
1307
+ target = $(event .target),
1308
+ element = target .closest (".node", this .sceneGraph),
1309
+ layerNode = this .getNode (element),
1310
+ layerSet = this .browser .getWorld () .getLayerSet (),
1311
+ index = layerSet ._layers .findIndex (node => node ?.getValue () .valueOf () === layerNode);
1312
+
1313
+ if (index < 0)
1314
+ return;
1315
+
1316
+ if (layerSet ._activeLayer .getValue () === index + 1)
1317
+ Editor .setFieldValue (this .browser .currentScene, layerSet, layerSet ._activeLayer, -1);
1318
+ else
1319
+ Editor .setFieldValue (this .browser .currentScene, layerSet, layerSet ._activeLayer, index + 1);
1320
+ }
1321
+
1301
1322
  addBooleanField (button)
1302
1323
  {
1303
1324
  const
@@ -1335,7 +1356,7 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1335
1356
  showAlpha: field .getType () === X3D .X3DConstants .SFColorRGBA,
1336
1357
  showInitial: true,
1337
1358
  showInput: false,
1338
- preferredFormat: "name",
1359
+ preferredFormat: "name",
1339
1360
  showButtons: false,
1340
1361
  allowEmpty: false,
1341
1362
  })
@@ -1353,7 +1374,7 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1353
1374
  value .g = rgb .g / 255;
1354
1375
  value .b = rgb .b / 255;
1355
1376
 
1356
- if (value .getType () === X3D .X3DConstants .SFColorRGBA)
1377
+ if (value .getType () === X3D .X3DConstants .SFColorRGBA)
1357
1378
  value .a = rgb .a;
1358
1379
 
1359
1380
  Editor .setFieldValue (node .getExecutionContext (), node, field, value);
@@ -1371,10 +1392,10 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1371
1392
  });
1372
1393
  }
1373
1394
 
1374
- removeColorField (button)
1375
- {
1376
- button .spectrum ?.("destroy");
1377
- }
1395
+ removeColorField (button)
1396
+ {
1397
+ button .spectrum ?.("destroy");
1398
+ }
1378
1399
 
1379
1400
  addTimeField (button)
1380
1401
  {
@@ -1503,7 +1524,7 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1503
1524
  case "Cylinder":
1504
1525
  case "Sphere":
1505
1526
  {
1506
- toolNode .getTransformTool () .tool .getField ("isActive") .setValue (true);
1527
+ toolNode .getTransformTool () .tool .getField ("active") .setValue (true);
1507
1528
  break;
1508
1529
  }
1509
1530
  case "Disk2D":
@@ -1511,13 +1532,13 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1511
1532
  if (field .getName () === "innerRadius")
1512
1533
  {
1513
1534
  toolNode .tool .group = `${node .getTypeName ()}.innerRadius`;
1514
- toolNode .getInnerRadiusTransformTool () .tool .getField ("isActive") .setValue (true);
1535
+ toolNode .getInnerRadiusTransformTool () .tool .getField ("active") .setValue (true);
1515
1536
  }
1516
1537
 
1517
1538
  if (field .getName () === "outerRadius")
1518
1539
  {
1519
1540
  toolNode .tool .group = `${node .getTypeName ()}.outerRadius`;
1520
- toolNode .getOuterRadiusTransformTool () .tool .getField ("isActive") .setValue (true);
1541
+ toolNode .getOuterRadiusTransformTool () .tool .getField ("active") .setValue (true);
1521
1542
  }
1522
1543
 
1523
1544
  break;
@@ -1527,8 +1548,13 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1527
1548
  if (toolNode .tool .group !== "Transform")
1528
1549
  break;
1529
1550
 
1530
- toolNode .tool .getField ("isActive") .setValue (true);
1531
- toolNode .tool .transformTool ?.getValue () .getTool () ?.tool .getField ("isActive") .setValue (true);
1551
+ const innerTool = toolNode .tool .transformTool ?.getValue () .getTool ();
1552
+
1553
+ if (innerTool)
1554
+ innerTool .tool .getField ("active") .setValue (true);
1555
+ else
1556
+ toolNode .tool .getField ("active") .setValue (true);
1557
+
1532
1558
  break;
1533
1559
  }
1534
1560
  }
@@ -1536,6 +1562,8 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1536
1562
  toolNode .handleUndo (new X3D .SFBool (true));
1537
1563
  }
1538
1564
 
1565
+ #endUndoSetFieldValueSymbol = Symbol ();
1566
+
1539
1567
  endUndoSetFieldValue (node, field)
1540
1568
  {
1541
1569
  const toolNode = node .getTool ?.();
@@ -1554,13 +1582,13 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1554
1582
  case "Cylinder":
1555
1583
  case "Sphere":
1556
1584
  {
1557
- this .browser .finishedEvents () .addFieldCallback (this, () =>
1585
+ this .browser .finishedEvents () .addFieldCallback (this .#endUndoSetFieldValueSymbol, () =>
1558
1586
  {
1559
- this .browser .finishedEvents () .removeFieldCallback (this);
1587
+ this .browser .finishedEvents () .removeFieldCallback (this .#endUndoSetFieldValueSymbol);
1560
1588
 
1561
1589
  toolNode .getTransformTool () .transformGroups ();
1562
1590
  toolNode .handleUndo (new X3D .SFBool ());
1563
- toolNode .getTransformTool () .tool .getField ("isActive") .setValue (false);
1591
+ toolNode .getTransformTool () .tool .getField ("active") .setValue (false);
1564
1592
 
1565
1593
  UndoManager .shared .endUndo ();
1566
1594
  });
@@ -1569,9 +1597,9 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1569
1597
  }
1570
1598
  case "Disk2D":
1571
1599
  {
1572
- this .browser .finishedEvents () .addFieldCallback (this, () =>
1600
+ this .browser .finishedEvents () .addFieldCallback (this .#endUndoSetFieldValueSymbol, () =>
1573
1601
  {
1574
- this .browser .finishedEvents () .removeFieldCallback (this);
1602
+ this .browser .finishedEvents () .removeFieldCallback (this .#endUndoSetFieldValueSymbol);
1575
1603
 
1576
1604
  if (field .getName () === "innerRadius")
1577
1605
  toolNode .getInnerRadiusTransformTool () .transformGroups ();
@@ -1582,10 +1610,10 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1582
1610
  toolNode .handleUndo (new X3D .SFBool ());
1583
1611
 
1584
1612
  if (field .getName () === "innerRadius")
1585
- toolNode .getInnerRadiusTransformTool () .tool .getField ("isActive") .setValue (false);
1613
+ toolNode .getInnerRadiusTransformTool () .tool .getField ("active") .setValue (false);
1586
1614
 
1587
1615
  if (field .getName () === "outerRadius")
1588
- toolNode .getOuterRadiusTransformTool () .tool .getField ("isActive") .setValue (false);
1616
+ toolNode .getOuterRadiusTransformTool () .tool .getField ("active") .setValue (false);
1589
1617
 
1590
1618
  UndoManager .shared .endUndo ();
1591
1619
  });
@@ -1603,15 +1631,13 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1603
1631
  {
1604
1632
  // Sound, X3DEnvironmentalSensorNode, ...
1605
1633
 
1606
- this .browser .finishedEvents () .addFieldCallback (this, () =>
1634
+ this .browser .finishedEvents () .addFieldCallback (this .#endUndoSetFieldValueSymbol, () =>
1607
1635
  {
1608
- this .browser .finishedEvents () .removeFieldCallback (this);
1636
+ this .browser .finishedEvents () .removeFieldCallback (this .#endUndoSetFieldValueSymbol);
1609
1637
 
1610
1638
  innerTool .transformGroups ();
1611
1639
  toolNode .handleUndo (new X3D .SFBool ());
1612
-
1613
- toolNode .tool .getField ("isActive") .setValue (false);
1614
- innerTool .tool .getField ("isActive") .setValue (false);
1640
+ innerTool .tool .getField ("active") .setValue (false);
1615
1641
 
1616
1642
  UndoManager .shared .endUndo ();
1617
1643
  });
@@ -1622,7 +1648,7 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1622
1648
 
1623
1649
  toolNode .transformGroups ();
1624
1650
  toolNode .handleUndo (new X3D .SFBool ());
1625
- toolNode .tool .getField ("isActive") .setValue (false);
1651
+ toolNode .tool .getField ("active") .setValue (true);
1626
1652
 
1627
1653
  UndoManager .shared .endUndo ();
1628
1654
  }
@@ -1705,7 +1731,7 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1705
1731
  if (this .connector .type === type)
1706
1732
  {
1707
1733
  if (this .connector .field === field)
1708
- return
1734
+ return
1709
1735
  }
1710
1736
  }
1711
1737
 
@@ -1756,65 +1782,65 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1756
1782
  {
1757
1783
  case "input":
1758
1784
  {
1759
- const routes = field .getInputRoutes ();
1760
-
1761
- switch (routes .size)
1762
- {
1763
- case 0:
1764
- {
1765
- break
1766
- }
1767
- case 1:
1768
- {
1769
- for (const route of routes)
1770
- {
1771
- // Delete route.
1772
-
1773
- Editor .deleteRoute (route .getExecutionContext (), route .sourceNode, route .sourceField, route .destinationNode, route .destinationField);
1774
- }
1775
-
1776
- break;
1777
- }
1778
- default:
1779
- {
1780
- element .data ("full-expanded", true);
1781
- element .jstree ("open_node", element);
1782
- break;
1783
- }
1784
- }
1785
-
1786
- break
1785
+ const routes = field .getInputRoutes ();
1786
+
1787
+ switch (routes .size)
1788
+ {
1789
+ case 0:
1790
+ {
1791
+ break
1792
+ }
1793
+ case 1:
1794
+ {
1795
+ for (const route of routes)
1796
+ {
1797
+ // Delete route.
1798
+
1799
+ Editor .deleteRoute (route .getExecutionContext (), route .sourceNode, route .sourceField, route .destinationNode, route .destinationField);
1800
+ }
1801
+
1802
+ break;
1803
+ }
1804
+ default:
1805
+ {
1806
+ element .data ("full-expanded", true);
1807
+ element .jstree ("open_node", element);
1808
+ break;
1809
+ }
1810
+ }
1811
+
1812
+ break
1787
1813
  }
1788
1814
  case "output":
1789
1815
  {
1790
- const routes = field .getOutputRoutes ();
1791
-
1792
- switch (routes .size)
1793
- {
1794
- case 0:
1795
- {
1796
- break
1797
- }
1798
- case 1:
1799
- {
1800
- for (const route of routes)
1801
- {
1802
- // Delete route.
1803
-
1804
- Editor .deleteRoute (route .getExecutionContext (), route .sourceNode, route .sourceField, route .destinationNode, route .destinationField);
1805
- }
1806
-
1807
- break;
1808
- }
1809
- default:
1810
- {
1811
- element .data ("full-expanded", true);
1812
- element .jstree ("open_node", element);
1813
- break;
1814
- }
1815
- }
1816
-
1817
- break;
1816
+ const routes = field .getOutputRoutes ();
1817
+
1818
+ switch (routes .size)
1819
+ {
1820
+ case 0:
1821
+ {
1822
+ break
1823
+ }
1824
+ case 1:
1825
+ {
1826
+ for (const route of routes)
1827
+ {
1828
+ // Delete route.
1829
+
1830
+ Editor .deleteRoute (route .getExecutionContext (), route .sourceNode, route .sourceField, route .destinationNode, route .destinationField);
1831
+ }
1832
+
1833
+ break;
1834
+ }
1835
+ default:
1836
+ {
1837
+ element .data ("full-expanded", true);
1838
+ element .jstree ("open_node", element);
1839
+ break;
1840
+ }
1841
+ }
1842
+
1843
+ break;
1818
1844
  }
1819
1845
  }
1820
1846
  }
@@ -1828,73 +1854,73 @@ module .exports = class OutlineEditor extends OutlineRouteGraph
1828
1854
  {
1829
1855
  case "input":
1830
1856
  {
1831
- if (this .connector)
1832
- {
1833
- if (this .connector .type === type)
1834
- break;
1857
+ if (this .connector)
1858
+ {
1859
+ if (this .connector .type === type)
1860
+ break;
1835
1861
 
1836
- if (this .connector .executionContext !== executionContext)
1837
- break;
1862
+ if (this .connector .executionContext !== executionContext)
1863
+ break;
1838
1864
 
1839
- if (this .connector .field .getType () !== field .getType ())
1840
- break;
1865
+ if (this .connector .field .getType () !== field .getType ())
1866
+ break;
1841
1867
 
1842
1868
  if (this .connector .node .getField (this .connector .field .getName ()) .getFieldInterests () .has (node .getField (field .getName ())))
1843
1869
  break;
1844
1870
 
1845
- // Add route.
1871
+ // Add route.
1846
1872
 
1847
- Editor .addRoute (executionContext, this .connector .node, this .connector .field .getName (), node, field .getName ());
1873
+ Editor .addRoute (executionContext, this .connector .node, this .connector .field .getName (), node, field .getName ());
1848
1874
 
1849
- if (event .shiftKey)
1850
- break;
1875
+ if (event .shiftKey)
1876
+ break;
1851
1877
 
1852
- this .connector .element .find (".access-type img.active.output.activated")
1853
- .removeClass ("activated");
1878
+ this .connector .element .find (".access-type img.active.output.activated")
1879
+ .removeClass ("activated");
1854
1880
 
1855
- delete this .connector;
1856
- }
1857
- else
1858
- {
1859
- this .connector = { type, executionContext, node, field, element };
1860
- }
1881
+ delete this .connector;
1882
+ }
1883
+ else
1884
+ {
1885
+ this .connector = { type, executionContext, node, field, element };
1886
+ }
1861
1887
 
1862
- break
1888
+ break
1863
1889
  }
1864
1890
  case "output":
1865
1891
  {
1866
- if (this .connector)
1867
- {
1868
- if (this .connector .type === type)
1869
- break;
1892
+ if (this .connector)
1893
+ {
1894
+ if (this .connector .type === type)
1895
+ break;
1870
1896
 
1871
- if (this .connector .executionContext !== executionContext)
1872
- break;
1897
+ if (this .connector .executionContext !== executionContext)
1898
+ break;
1873
1899
 
1874
- if (this .connector .field .getType () !== field .getType ())
1875
- break;
1900
+ if (this .connector .field .getType () !== field .getType ())
1901
+ break;
1876
1902
 
1877
1903
  if (node .getField (field .getName ()) .getFieldInterests () .has (this .connector .node .getField (this .connector .field .getName ())))
1878
1904
  break;
1879
1905
 
1880
- // Add route.
1906
+ // Add route.
1881
1907
 
1882
- Editor .addRoute (executionContext, node, field .getName (), this .connector .node, this .connector .field .getName ());
1908
+ Editor .addRoute (executionContext, node, field .getName (), this .connector .node, this .connector .field .getName ());
1883
1909
 
1884
- if (event .shiftKey)
1885
- break;
1910
+ if (event .shiftKey)
1911
+ break;
1886
1912
 
1887
- this .connector .element .find (".access-type img.active.input.activated")
1888
- .removeClass ("activated");
1913
+ this .connector .element .find (".access-type img.active.input.activated")
1914
+ .removeClass ("activated");
1889
1915
 
1890
- delete this .connector;
1891
- }
1892
- else
1893
- {
1894
- this .connector = { type, executionContext, node, field, element };
1895
- }
1916
+ delete this .connector;
1917
+ }
1918
+ else
1919
+ {
1920
+ this .connector = { type, executionContext, node, field, element };
1921
+ }
1896
1922
 
1897
- break;
1923
+ break;
1898
1924
  }
1899
1925
  }
1900
1926
  }