44using System ;
55using System . Collections . Generic ;
66using System . IO ;
7- using OpenTK ;
8- using OpenTK . Graphics . OpenGL ;
97using Toolbox . Core . ViewModels ;
108using CafeLibrary . Rendering ;
119using MapStudio . UI ;
1513using ImGuiNET ;
1614using RedStarLibrary . Rendering ;
1715using RedStarLibrary . MapData ;
18- using BfresLibrary ;
19- using CafeLibrary . ModelConversion ;
2016using RedStarLibrary . Extensions ;
2117using UIFramework ;
22- using Newtonsoft . Json . Linq ;
2318using RedStarLibrary . Helpers ;
24- using System . IO . Pipes ;
2519
2620namespace RedStarLibrary . GameTypes
2721{
@@ -319,7 +313,7 @@ public void CreateZoneRenderer()
319313
320314 Console . WriteLine ( $ "Creating Zone Render of Actor: { Placement . Id } { Placement . UnitConfigName } ") ;
321315
322- var zoneRenderer = new StageZoneRenderer ( ) ;
316+ var zoneRenderer = new StageZoneRenderer ( Placement . ObjectName ) ;
323317
324318 objectRender = zoneRenderer ;
325319 RenderMode = ActorRenderMode . Zone ;
@@ -405,31 +399,9 @@ public void PlaceLinkedObjects(PlacementFileEditor loader)
405399 public bool TryExportModel ( string outPath )
406400 {
407401 if ( objectRender is BfresRender bfresRender )
408- {
409- outPath = Path . Combine ( outPath , ArchiveName ) ;
410- if ( ! Directory . Exists ( outPath ) )
411- Directory . CreateDirectory ( outPath ) ;
412- else // dont bother re-dumping if the model folder is already present
413- return true ;
414-
415- var resFile = bfresRender . ResFile ;
416-
417- if ( resFile == null )
418- throw new NullReferenceException ( ) ;
419-
420- foreach ( var model in resFile . Models )
421- {
422- var modelPath = Path . Combine ( outPath , model . Key + ".dae" ) ;
423-
424- var scene = BfresModelExporter . FromGeneric ( resFile , model . Value ) ;
425- IONET . IOManager . ExportScene ( scene , modelPath , new IONET . ExportSettings ( ) { } ) ;
426- }
427-
428- foreach ( ( var texName , var arcTex ) in bfresRender . Textures )
429- arcTex . OriginalSource ? . Export ( Path . Combine ( outPath , $ "{ texName } .png") , new TextureExportSettings ( ) ) ;
430-
431- return true ;
432- }
402+ return bfresRender . ExportModel ( outPath , ArchiveName ) ;
403+ else if ( objectRender is StageZoneRenderer zoneRender )
404+ zoneRender . DumpModels ( outPath ) ;
433405 return false ;
434406 }
435407
@@ -488,6 +460,8 @@ public ITransformableObject GetTransformObj()
488460 }
489461
490462 public EditableObject GetEditObj ( ) => objectRender ;
463+ public StageZoneRenderer GetZoneRenderer ( ) => GetEditObj ( ) as StageZoneRenderer ;
464+ public BfresRender GetBfresRender ( ) => GetEditObj ( ) as BfresRender ;
491465
492466 private List < string > GetUsedTextureNames ( )
493467 {
@@ -516,11 +490,11 @@ private void UpdateRenderer()
516490 objectRender . UINode . TagUI . UIDrawer += ( o , e ) => PropertyDrawer . Draw ( Placement . ActorParams ) ;
517491 objectRender . UINode . TagUI . UIDrawer += DrawLayerConfig ;
518492
519- if ( RenderMode == ActorRenderMode . Bfres )
493+ if ( RenderMode == ActorRenderMode . Bfres || RenderMode == ActorRenderMode . Zone )
520494 objectRender . UINode . TagUI . UIDrawer += DrawModelProperties ;
521- else if ( RenderMode == ActorRenderMode . Area )
495+ if ( RenderMode == ActorRenderMode . Area )
522496 objectRender . UINode . TagUI . UIDrawer += DrawAreaProperties ;
523- else if ( RenderMode == ActorRenderMode . Zone )
497+ if ( RenderMode == ActorRenderMode . Zone )
524498 objectRender . UINode . TagUI . UIDrawer += DrawZoneProperties ;
525499
526500 objectRender . Transform . TransformUpdated += delegate
@@ -568,7 +542,7 @@ private void DrawModelProperties(object sender, EventArgs e)
568542 float width = ImGui . GetWindowWidth ( ) ;
569543 var btnSize = new System . Numerics . Vector2 ( width , 22 ) ;
570544
571- if ( ImGui . Button ( "Open Model" , btnSize ) )
545+ if ( RenderMode == ActorRenderMode . Bfres && ImGui . Button ( "Open Model" , btnSize ) )
572546 Framework . QueueWindowFileDrop ( modelPath ) ;
573547
574548 if ( ImGui . Button ( "Export Model" , btnSize ) )
@@ -579,7 +553,7 @@ private void DrawModelProperties(object sender, EventArgs e)
579553 TryExportModel ( dlg . SelectedPath ) ;
580554 }
581555
582- if ( ImGui . Button ( "Reload Model" , btnSize ) )
556+ if ( RenderMode == ActorRenderMode . Bfres && ImGui . Button ( "Reload Model" , btnSize ) )
583557 {
584558 var arcName = ! string . IsNullOrEmpty ( Placement . ModelName ) ? Placement . ModelName : Placement . UnitConfigName ;
585559 var arcPath = ResourceManager . FindResourcePath ( Path . Combine ( "ObjectData" , $ "{ arcName } .szs") ) ;
@@ -740,8 +714,6 @@ internal void TryLoadModelRenderer()
740714 {
741715 LoadModel ( modelARC , modelStream ) ;
742716
743- CreateBfresRenderer ( modelStream , modelARC . GetTexArchive ( ) ) ;
744-
745717 var fileStream = modelARC . GetInitFileStream ( "InitClipping" ) ;
746718
747719 if ( fileStream != null )
0 commit comments