@@ -153,6 +153,7 @@ private void InitDockingControls()
153153 dPropertyGrid . OnObjectUpdated += ApplyEntryChanges ;
154154 dSceneTree . TranslokatorNewInstanceButton . Click += new EventHandler ( TranslokatorNewInstanceButton_Click ) ;
155155 dSceneTree . ActorEntryNewTRObjectButton . Click += new EventHandler ( ActorEntryNewTRObjectButton_Click ) ;
156+ dSceneTree . TRRebuildObjectButton . Click += new EventHandler ( TRRebuildObjectButton_Click ) ;
156157 }
157158
158159 private void RenderPanel_MouseWheel ( object sender , MouseEventArgs e )
@@ -2851,6 +2852,35 @@ private void RebuildTranslokatorGrids()
28512852 }
28522853 }
28532854 }
2855+
2856+ private void TRRebuildObjectButton_Click ( object sender , EventArgs e )
2857+ {
2858+ TreeNode ObjectNode = dSceneTree . SelectedNode ;
2859+ Object obj = ObjectNode . Tag as Object ;
2860+ if ( ObjectNode == null || obj == null || ObjectNode . Nodes . Count == 0 )
2861+ {
2862+ return ;
2863+ }
2864+ FrameObjectBase groupRef = SceneData . FrameResource . GetObjectByHash < FrameObjectBase > ( obj . Name . Hash ) ;
2865+
2866+ foreach ( TreeNode instanceNode in ObjectNode . Nodes ) //deleting all instances under selected object and rebuilding them
2867+ {
2868+ Instance instance = instanceNode . Tag as Instance ;
2869+ if ( groupRef != null && groupRef . HasMeshObject ( ) )
2870+ {
2871+ Graphics . DeleteInstance ( groupRef , instance . RefID ) ; //maybe add optionable bool to delete in rendermodel so it doesnt reload every instance here
2872+ for ( int i = 0 ; i < groupRef . Children . Count ; i ++ )
2873+ {
2874+ InstanceTranslokatorPart ( Graphics . Assets , groupRef . Children [ i ] , Matrix4x4 . Identity , instance , true ) ;
2875+ }
2876+ }
2877+ else
2878+ {
2879+ Graphics . DeleteInstance ( instance . RefID ) ;
2880+ Graphics . InstanceGizmo . InstanceTranslokator ( instance , Graphics . GetId3D11Device ( ) ) ;
2881+ }
2882+ }
2883+ }
28542884 }
28552885}
28562886
0 commit comments