@@ -15,7 +15,7 @@ let graph;
1515let selectedNode = null ;
1616let selectedNodeIndex = - 1 ;
1717
18- let changeName = false ;
18+ let inPropertyWindow = false ;
1919let bulkcreate = 0 ;
2020let createNeighbor = false ;
2121
@@ -31,6 +31,11 @@ function Main()
3131 window . addEventListener ( "_event_modal_ok_" , _event_modal_onOk ) ;
3232 window . addEventListener ( "_event_modal_delete_" , _event_modal_onDelete ) ;
3333 window . addEventListener ( "_event_modal_createneighbor_" , _event_modal_onCreateNeighbor ) ;
34+ window . addEventListener ( "_event_rebuild_element_" , _event_modal_onElementRebuild ) ;
35+ window . addEventListener ( "_event_element_addvertex_" , _event_modal_onElementVertexAdd ) ;
36+ window . addEventListener ( "_event_element_addindex_" , _event_modal_onElementIndexAdd ) ;
37+ window . addEventListener ( "_event_element_executevertexcode_" , _event_modal_onElementExecuteVertex ) ;
38+ window . addEventListener ( "_event_element_executeindexcode_" , _event_modal_onElementExecuteIndex ) ;
3439 RC2 . addEventListener ( "mousedown" , _event_onMouseDown ) ;
3540 RC2 . addEventListener ( "touchstart" , _event_onTouchDown ) ;
3641 RC2 . addEventListener ( "mouseup" , _event_onMouseUp ) ;
@@ -104,57 +109,13 @@ function ParseURL()
104109}
105110function Initialize ( )
106111{
107- let Vertices = [
108- new GraphicsVertex ( - 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
109- new GraphicsVertex ( + 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
110- new GraphicsVertex ( + 1.0 , - 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
111- new GraphicsVertex ( - 1.0 , - 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
112-
113- new GraphicsVertex ( - 1.0 , + 1.0 , - 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
114- new GraphicsVertex ( + 1.0 , + 1.0 , - 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
115- new GraphicsVertex ( + 1.0 , - 1.0 , - 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
116- new GraphicsVertex ( - 1.0 , - 1.0 , - 1.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
117- ]
118- let Indices = [
119- new Index ( 0 , 1 , 2 ) ,
120- new Index ( 0 , 2 , 3 ) ,
121-
122- new Index ( 4 , 5 , 6 ) ,
123- new Index ( 4 , 6 , 7 )
124- ]
125- obj = new Object3D ( ME , Vertices , Indices , "OBJ" ) ;
126112 graph = new Graph ( ) ;
127-
128- //let el = new Element(obj);
129- //graph.RegisterElement(el);
130-
131- /*let el = new Element(obj);
132-
133- g = new Graph();
134- let A = new Node("A", new Vertex(0, 3, 0));
135- let B = new Node("B", new Vertex(3, 0, 0));
136- let C = new Node("C", new Vertex(-3, 0, 0));
137- let D = new Node("D", new Vertex(0, -3, 0));
138- let E = new Node("E", new Vertex(0, 0, 0));
139- A.CreatePathTo(B, true);
140- A.CreatePathTo(C, true);
141- B.CreatePathTo(C, true);
142- B.CreatePathTo(D, true);
143- C.CreatePathTo(D, true);
144- //B.Selected = true;
145- g.RegisterNode(A);
146- g.RegisterNode(B);
147- g.RegisterNode(C);
148- g.RegisterNode(D);
149- g.RegisterNode(E);
150- g.RegisterElement(el);
151- //g.GetPath(A, D);*/
152113}
153114function _event_onKeyPress ( event )
154115{
155116 if ( selectedNode )
156117 {
157- if ( ! changeName )
118+ if ( ! inPropertyWindow )
158119 {
159120 let speed = 0.1 ;
160121 if ( event . key === "ArrowUp" )
@@ -184,7 +145,19 @@ function _event_onKeyPress(event)
184145 if ( event . key === "i" )
185146 {
186147 window . dispatchEvent ( new CustomEvent ( "_event_onSignalProperties" , { detail : { node : selectedNode } } ) ) ;
187- changeName = true ;
148+ inPropertyWindow = true ;
149+ }
150+ if ( event . key === "e" )
151+ {
152+ for ( let i = 0 ; i < graph . Elements . length ; i ++ )
153+ {
154+ if ( graph . Elements [ i ] . Node === selectedNode )
155+ {
156+ window . dispatchEvent ( new CustomEvent ( "_event_onSignalElements" , { detail : { element : graph . Elements [ i ] } } ) ) ;
157+ inPropertyWindow = true ;
158+ break ;
159+ }
160+ }
188161 }
189162 }
190163 }
@@ -212,7 +185,22 @@ function _event_onNavigationSelect(event)
212185 let navigation = event . detail . key ;
213186 if ( navigation === "_navigation_element_create" )
214187 {
215-
188+ let Vertices = [
189+ new GraphicsVertex ( - 1.0 , + 1.0 , + 0.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
190+ new GraphicsVertex ( + 1.0 , + 1.0 , + 0.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
191+ new GraphicsVertex ( + 1.0 , - 1.0 , + 0.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
192+ new GraphicsVertex ( - 1.0 , - 1.0 , + 0.0 , + 1.0 , + 1.0 , + 1.0 , + 1.0 ) ,
193+ ]
194+ let Indices = [
195+ new Index ( 0 , 1 , 2 ) ,
196+ new Index ( 0 , 2 , 3 ) ,
197+ ]
198+ obj = new Object3D ( ME , Vertices , Indices , "New Object" ) ;
199+ let N = new Element ( obj , "New Element" , "Generic" ) ;
200+ N . BindToNode ( selectedNode ) ;
201+ graph . RegisterElement ( N ) ;
202+ window . dispatchEvent ( new CustomEvent ( "_event_onSignalElements" , { detail : { element : N } } ) ) ;
203+ inPropertyWindow = true ;
216204 }
217205 else if ( navigation === "_navigation_node_create" )
218206 {
@@ -226,7 +214,7 @@ function _event_onNavigationSelect(event)
226214 selectedNodeIndex = - 1 ;
227215 _event_onNodeSelect ( graph . Nodes [ graph . Nodes . length - 1 ] , graph . Nodes . length - 1 ) ;
228216 window . dispatchEvent ( new CustomEvent ( "_event_onSignalProperties" , { detail : { node : selectedNode } } ) ) ;
229- changeName = true ;
217+ inPropertyWindow = true ;
230218 }
231219 else if ( navigation === "_navigation_node_bulkcreate" )
232220 {
@@ -240,7 +228,7 @@ function _event_onNavigationSelect(event)
240228 else if ( navigation === "_navigation_node_inspect" )
241229 {
242230 window . dispatchEvent ( new CustomEvent ( "_event_onSignalProperties" , { detail : { node : selectedNode } } ) ) ;
243- changeName = true ;
231+ inPropertyWindow = true ;
244232 }
245233 else if ( navigation === "_navigation_node_remove" )
246234 {
@@ -353,7 +341,7 @@ function _event_onMouseWheel(event)
353341}
354342function _event_modal_onOk ( event )
355343{
356- changeName = false ;
344+ inPropertyWindow = false ;
357345 if ( bulkcreate > 0 )
358346 {
359347 setTimeout ( ( ) =>
@@ -365,19 +353,61 @@ function _event_modal_onOk(event)
365353function _event_modal_onDelete ( event )
366354{
367355 graph . Nodes . splice ( selectedNodeIndex , 1 ) ;
368- changeName = false ;
356+ inPropertyWindow = false ;
369357 if ( bulkcreate > 0 )
370358 {
371359 setTimeout ( ( ) =>
372360 {
373361 _event_onNavigationSelect ( { detail : { key : "_navigation_node_bulkcreate" , number : bulkcreate -- } } ) ;
374362 } , 1 ) ;
375363 }
364+ selectedNode = null ;
365+ selectedNodeIndex = - 1 ;
376366}
377367function _event_modal_onCreateNeighbor ( event )
378368{
379369 createNeighbor = true ;
380370}
371+ function _event_modal_onElementRebuild ( event )
372+ {
373+ event . detail . element . Object . rebuild ( ME ) ;
374+ }
375+ function _event_modal_onElementVertexAdd ( event )
376+ {
377+ event . detail . element . Object . Vertices . push ( new GraphicsVertex ( 0.0 , 0.0 , 0.0 , 1.0 , 1.0 , 1.0 , 1.0 ) ) ;
378+ _event_modal_onElementRebuild ( event ) ;
379+ }
380+ function _event_modal_onElementIndexAdd ( event )
381+ {
382+ event . detail . element . Object . Indices . push ( new Index ( 0 , 0 , 0 ) ) ;
383+ _event_modal_onElementRebuild ( event ) ;
384+ }
385+ function _event_modal_onElementExecuteVertex ( event )
386+ {
387+ let code = "[\n" + event . detail . code + "\n]" ;
388+ try
389+ {
390+ event . detail . element . Object . Vertices = eval ( code ) ;
391+ _event_modal_onElementRebuild ( event ) ;
392+ }
393+ catch ( e )
394+ {
395+
396+ }
397+ }
398+ function _event_modal_onElementExecuteIndex ( event )
399+ {
400+ let code = "[\n" + event . detail . code + "\n]" ;
401+ try
402+ {
403+ event . detail . element . Object . Indices = eval ( code ) ;
404+ _event_modal_onElementRebuild ( event ) ;
405+ }
406+ catch ( e )
407+ {
408+
409+ }
410+ }
381411function MainLoop ( )
382412{
383413 requestAnimFrame ( MainLoop ) ;
@@ -386,7 +416,6 @@ function MainLoop()
386416}
387417function Update ( )
388418{
389- obj . Rotation . X += 1 ;
390419 if ( MouseButton == 1 )
391420 {
392421 DeltaMouse = new Point ( PreviousMousePosition . X - MousePosition . X , PreviousMousePosition . Y - MousePosition . Y ) ;
0 commit comments