diff --git a/CodeWalker.Core/GameFiles/Resources/Frag.cs b/CodeWalker.Core/GameFiles/Resources/Frag.cs index ce47509..d0b2e09 100644 --- a/CodeWalker.Core/GameFiles/Resources/Frag.cs +++ b/CodeWalker.Core/GameFiles/Resources/Frag.cs @@ -616,6 +616,17 @@ namespace CodeWalker.GameFiles assign(PhysicsLODGroup.PhysicsLOD2); assign(PhysicsLODGroup.PhysicsLOD3); + + + if (DrawableArray?.data_items != null) + { + foreach (var arrd in DrawableArray.data_items) + { + assigndr(arrd, null, 0); + } + } + + } public void AssignChildrenSkeletonsAndBounds() diff --git a/CodeWalker/Forms/ModelForm.cs b/CodeWalker/Forms/ModelForm.cs index fd182ec..f5c68cd 100644 --- a/CodeWalker/Forms/ModelForm.cs +++ b/CodeWalker/Forms/ModelForm.cs @@ -991,6 +991,26 @@ namespace CodeWalker.Forms } } } + + var fdarr = fdrawable.OwnerFragment?.DrawableArray?.data_items; + if (fdarr != null) + { + var fdnames = fdrawable.OwnerFragment?.DrawableArrayNames?.data_items; + for (int i = 0; i < fdarr.Length; i++) + { + var arrd = fdarr[i]; + if ((arrd != null) && (arrd.AllModels?.Length > 0)) + { + var dname = ((fdnames != null) && (i < fdnames.Length)) ? fdnames[i]?.Value : arrd.Name; + if (string.IsNullOrEmpty(dname)) dname = "(No name)"; + AddDrawableModelsTreeNodes(arrd.DrawableModels?.High, dname + " - High Detail", false); + AddDrawableModelsTreeNodes(arrd.DrawableModels?.Med, dname + " - Medium Detail", false); + AddDrawableModelsTreeNodes(arrd.DrawableModels?.Low, dname + " - Low Detail", false); + AddDrawableModelsTreeNodes(arrd.DrawableModels?.VLow, dname + " - Very Low Detail", false); + } + } + } + } } } diff --git a/CodeWalker/Forms/ModelMatForm.cs b/CodeWalker/Forms/ModelMatForm.cs index 2241927..ecbc47e 100644 --- a/CodeWalker/Forms/ModelMatForm.cs +++ b/CodeWalker/Forms/ModelMatForm.cs @@ -62,6 +62,26 @@ namespace CodeWalker.Forms } } } + + var fdarr = fdrawable.OwnerFragment?.DrawableArray?.data_items; + if (fdarr != null) + { + var fdnames = fdrawable.OwnerFragment?.DrawableArrayNames?.data_items; + for (int i = 0; i < fdarr.Length; i++) + { + var arrd = fdarr[i]; + if ((arrd != null) && (arrd.AllModels?.Length > 0)) + { + var dname = ((fdnames != null) && (i < fdnames.Length)) ? fdnames[i]?.Value : arrd.Name; + if (string.IsNullOrEmpty(dname)) dname = "(No name)"; + AddDrawableModelsTreeNodes(arrd.DrawableModels?.High, dname + " - High Detail"); + AddDrawableModelsTreeNodes(arrd.DrawableModels?.Med, dname + " - Medium Detail"); + AddDrawableModelsTreeNodes(arrd.DrawableModels?.Low, dname + " - Low Detail"); + AddDrawableModelsTreeNodes(arrd.DrawableModels?.VLow, dname + " - Very Low Detail"); + } + } + } + } } } diff --git a/CodeWalker/Rendering/Renderer.cs b/CodeWalker/Rendering/Renderer.cs index 23e6347..878601e 100644 --- a/CodeWalker/Rendering/Renderer.cs +++ b/CodeWalker/Rendering/Renderer.cs @@ -2729,6 +2729,21 @@ namespace CodeWalker.Rendering } } + + bool isselected = SelectionFlagsTestAll || (f.Drawable == SelectedDrawable); + if (isselected) + { + var darr = f.DrawableArray?.data_items; + if (darr != null) + { + for (int i = 0; i < darr.Length; i++) + { + RenderDrawable(darr[i], arch, ent, txdhash, null, null, animClip); + } + } + } + + return true; } diff --git a/CodeWalker/VehicleForm.cs b/CodeWalker/VehicleForm.cs index 0762739..67f74ea 100644 --- a/CodeWalker/VehicleForm.cs +++ b/CodeWalker/VehicleForm.cs @@ -659,6 +659,26 @@ namespace CodeWalker } } } + + var fdarr = fdrawable.OwnerFragment?.DrawableArray?.data_items; + if (fdarr != null) + { + var fdnames = fdrawable.OwnerFragment?.DrawableArrayNames?.data_items; + for (int i = 0; i < fdarr.Length; i++) + { + var arrd = fdarr[i]; + if ((arrd != null) && (arrd.AllModels?.Length > 0)) + { + var dname = ((fdnames != null) && (i < fdnames.Length)) ? fdnames[i]?.Value : arrd.Name; + if (string.IsNullOrEmpty(dname)) dname = "(No name)"; + AddDrawableModelsTreeNodes(arrd.DrawableModels?.High, dname + " - High Detail", false); + AddDrawableModelsTreeNodes(arrd.DrawableModels?.Med, dname + " - Medium Detail", false); + AddDrawableModelsTreeNodes(arrd.DrawableModels?.Low, dname + " - Low Detail", false); + AddDrawableModelsTreeNodes(arrd.DrawableModels?.VLow, dname + " - Very Low Detail", false); + } + } + } + } }