diff --git a/CodeWalker.Core/GameFiles/FileTypes/YftFile.cs b/CodeWalker.Core/GameFiles/FileTypes/YftFile.cs index 3690964..537b7ce 100644 --- a/CodeWalker.Core/GameFiles/FileTypes/YftFile.cs +++ b/CodeWalker.Core/GameFiles/FileTypes/YftFile.cs @@ -44,9 +44,9 @@ namespace CodeWalker.GameFiles { Fragment.Drawable.Owner = this; } - if (Fragment.Drawable2 != null) + if (Fragment.DrawableCloth != null) { - Fragment.Drawable2.Owner = this; + Fragment.DrawableCloth.Owner = this; } } diff --git a/CodeWalker.Core/GameFiles/Resources/Frag.cs b/CodeWalker.Core/GameFiles/Resources/Frag.cs index f95610b..761b857 100644 --- a/CodeWalker.Core/GameFiles/Resources/Frag.cs +++ b/CodeWalker.Core/GameFiles/Resources/Frag.cs @@ -83,7 +83,7 @@ namespace CodeWalker.GameFiles public ulong GlassWindowsPointer { get; set; } public ulong Unknown_E8h; // 0x0000000000000000 public ulong PhysicsLODGroupPointer { get; set; } - public ulong Drawable2Pointer { get; set; } + public ulong DrawableClothPointer { get; set; } public ulong Unknown_100h; // 0x0000000000000000 public ulong Unknown_108h; // 0x0000000000000000 public ResourceSimpleList64_s LightAttributes { get; set; } @@ -98,7 +98,7 @@ namespace CodeWalker.GameFiles public FragBoneTransforms BoneTransforms { get; set; } public ResourcePointerArray64 GlassWindows { get; set; } public FragPhysicsLODGroup PhysicsLODGroup { get; set; } - public FragDrawable Drawable2 { get; set; } + public FragDrawable DrawableCloth { get; set; } public FragVehicleGlassWindows VehicleGlassWindows { get; set; } @@ -149,7 +149,7 @@ namespace CodeWalker.GameFiles this.GlassWindowsPointer = reader.ReadUInt64(); this.Unknown_E8h = reader.ReadUInt64(); this.PhysicsLODGroupPointer = reader.ReadUInt64(); - this.Drawable2Pointer = reader.ReadUInt64(); + this.DrawableClothPointer = reader.ReadUInt64(); this.Unknown_100h = reader.ReadUInt64(); this.Unknown_108h = reader.ReadUInt64(); this.LightAttributes = reader.ReadBlock>(); @@ -164,17 +164,17 @@ namespace CodeWalker.GameFiles BoneTransforms = reader.ReadBlockAt(BoneTransformsPointer); GlassWindows = reader.ReadBlockAt>(GlassWindowsPointer, GlassWindowsCount); PhysicsLODGroup = reader.ReadBlockAt(PhysicsLODGroupPointer); - Drawable2 = reader.ReadBlockAt(Drawable2Pointer); + DrawableCloth = reader.ReadBlockAt(DrawableClothPointer); VehicleGlassWindows = reader.ReadBlockAt(VehicleGlassWindowsPointer); if (Drawable != null) { Drawable.OwnerFragment = this; } - if (Drawable2 != null) + if (DrawableCloth != null) { - Drawable2.OwnerFragment = this; - if (Drawable2.OwnerCloth == null) + DrawableCloth.OwnerFragment = this; + if (DrawableCloth.OwnerCloth == null) { }//no hit! } if (DrawableArray?.data_items != null) @@ -321,7 +321,7 @@ namespace CodeWalker.GameFiles this.GlassWindowsCount = (byte)(this.GlassWindows != null ? this.GlassWindows.Count : 0); this.GlassWindowsPointer = (ulong)(this.GlassWindows != null ? this.GlassWindows.FilePosition : 0); this.PhysicsLODGroupPointer = (ulong)(this.PhysicsLODGroup != null ? this.PhysicsLODGroup.FilePosition : 0); - this.Drawable2Pointer = (ulong)(this.Drawable2 != null ? this.Drawable2.FilePosition : 0); + this.DrawableClothPointer = (ulong)(this.DrawableCloth != null ? this.DrawableCloth.FilePosition : 0); this.VehicleGlassWindowsPointer = (ulong)(this.VehicleGlassWindows != null ? this.VehicleGlassWindows.FilePosition : 0); // write structure data @@ -362,7 +362,7 @@ namespace CodeWalker.GameFiles writer.Write(this.GlassWindowsPointer); writer.Write(this.Unknown_E8h); writer.Write(this.PhysicsLODGroupPointer); - writer.Write(this.Drawable2Pointer); + writer.Write(this.DrawableClothPointer); writer.Write(this.Unknown_100h); writer.Write(this.Unknown_108h); writer.WriteBlock(this.LightAttributes); @@ -386,10 +386,6 @@ namespace CodeWalker.GameFiles { FragDrawable.WriteXmlNode(Drawable, sb, indent, ddsfolder, "Drawable"); } - if (Drawable2 != null) - { - FragDrawable.WriteXmlNode(Drawable2, sb, indent, ddsfolder, "Drawable2"); - } if ((DrawableArray?.data_items?.Length ?? 0) > 0) { var danames = DrawableArrayNames?.data_items; @@ -467,11 +463,6 @@ namespace CodeWalker.GameFiles { Drawable = FragDrawable.ReadXmlNode(dnode, ddsfolder); } - var dnode2 = node.SelectSingleNode("Drawable2"); - if (dnode2 != null) - { - Drawable2 = FragDrawable.ReadXmlNode(dnode2, ddsfolder); - } var danode = node.SelectSingleNode("DrawableArray"); if (danode != null) { @@ -528,6 +519,8 @@ namespace CodeWalker.GameFiles var v = new EnvironmentCloth(); v.ReadXml(inode, ddsfolder); vlist.Add(v); + + DrawableCloth = v.Drawable; } Cloths.data_items = vlist.ToArray(); } @@ -560,7 +553,7 @@ namespace CodeWalker.GameFiles if (PhysicsLODGroup == null) return; //for things like vehicle wheels, the shaderGroup in the model is missing, so use the main drawable's shaders. - var pdrwbl = Drawable ?? Drawable2; + var pdrwbl = Drawable ?? DrawableCloth; var pskel = pdrwbl?.Skeleton; void assigndr(FragDrawable dr, BoundComposite pbcmp, int i) @@ -617,7 +610,7 @@ namespace CodeWalker.GameFiles { if (PhysicsLODGroup == null) return; - var pdrwbl = Drawable ?? Drawable2; + var pdrwbl = Drawable ?? DrawableCloth; var pskel = pdrwbl?.Skeleton; void assignskb(FragDrawable dr, BoundComposite pbcmp, int i) @@ -666,7 +659,7 @@ namespace CodeWalker.GameFiles if (BoneTransforms != null) list.Add(BoneTransforms); if (GlassWindows != null) list.Add(GlassWindows); if (PhysicsLODGroup != null) list.Add(PhysicsLODGroup); - if (Drawable2 != null) list.Add(Drawable2); + if (DrawableCloth != null) list.Add(DrawableCloth); if (VehicleGlassWindows != null) list.Add(VehicleGlassWindows); return list.ToArray(); } diff --git a/Rendering/Renderer.cs b/Rendering/Renderer.cs index 722c7dd..5685426 100644 --- a/Rendering/Renderer.cs +++ b/Rendering/Renderer.cs @@ -2590,9 +2590,9 @@ namespace CodeWalker.Rendering RenderDrawable(f.Drawable, arch, ent, txdhash, null, null, animClip); - if (f.Drawable2 != null) //cloth + if (f.DrawableCloth != null) //cloth { - RenderDrawable(f.Drawable2, arch, ent, txdhash, null, null, animClip); + RenderDrawable(f.DrawableCloth, arch, ent, txdhash, null, null, animClip); } //vehicle wheels... @@ -2817,9 +2817,9 @@ namespace CodeWalker.Rendering if (fd != null) { var frag = fd.OwnerFragment; - if ((frag != null) && (frag.Drawable2 != null)) //cloth... + if ((frag != null) && (frag.DrawableCloth != null)) //cloth... { - rndbl = TryGetRenderable(arche, frag.Drawable2); + rndbl = TryGetRenderable(arche, frag.DrawableCloth); if (rndbl != null) { bool res2 = RenderRenderable(rndbl, arche, entity);