From 9af0b419678d9f2635c9a263e013c4c09e3bc65c Mon Sep 17 00:00:00 2001 From: dexy Date: Mon, 14 Jan 2019 12:25:03 +1100 Subject: [PATCH] Fix for XML/PSO conversion inaccuracies --- CodeWalker.Core/GameFiles/GameFileCache.cs | 17 ++++-- .../GameFiles/MetaTypes/MetaNames.cs | 16 +++++- .../GameFiles/MetaTypes/PsoBuilder.cs | 14 ++--- .../GameFiles/MetaTypes/PsoTypes.cs | 3 +- Rendering/Renderable.cs | 53 +++++++++---------- 5 files changed, 60 insertions(+), 43 deletions(-) diff --git a/CodeWalker.Core/GameFiles/GameFileCache.cs b/CodeWalker.Core/GameFiles/GameFileCache.cs index f740607..b0911e3 100644 --- a/CodeWalker.Core/GameFiles/GameFileCache.cs +++ b/CodeWalker.Core/GameFiles/GameFileCache.cs @@ -2637,12 +2637,21 @@ namespace CodeWalker.GameFiles diffpsos.Add(fentry.Path); } - if (entry.NameLower == "wantedtuning.ymt") - { } - if (entry.NameLower == "popgroups.ymt") - { } + if (entry.NameLower == "clip_sets.ymt") { } + //if (entry.NameLower == "vfxinteriorinfo.ymt") + //{ } + //if (entry.NameLower == "vfxvehicleinfo.ymt") + //{ } + //if (entry.NameLower == "vfxpedinfo.ymt") + //{ } + //if (entry.NameLower == "vfxregioninfo.ymt") + //{ } + //if (entry.NameLower == "vfxweaponinfo.ymt") + //{ } + if (entry.NameLower == "physicstasks.ymt") + { } } } diff --git a/CodeWalker.Core/GameFiles/MetaTypes/MetaNames.cs b/CodeWalker.Core/GameFiles/MetaTypes/MetaNames.cs index efe3574..2fafc7c 100644 --- a/CodeWalker.Core/GameFiles/MetaTypes/MetaNames.cs +++ b/CodeWalker.Core/GameFiles/MetaTypes/MetaNames.cs @@ -3218,8 +3218,8 @@ namespace CodeWalker.GameFiles vecPlayerPos = 2050268192, vehglassCrackTextureParams = 3043112491, vehglassCrackTextureSampler = 3541769459, - Velocity1 = 1362920836, - Velocity2 = 1853341690, + velocity1 = 1362920836, + velocity2 = 1853341690, VelocityBufferSampler = 415075366, VelocityMapSampler = 3944176109, VelocityTexSampler = 2305380067, @@ -8629,6 +8629,18 @@ namespace CodeWalker.GameFiles yawKp = 922081581, + Velocity2 = 2944635386, + + + + + + + + + + + diff --git a/CodeWalker.Core/GameFiles/MetaTypes/PsoBuilder.cs b/CodeWalker.Core/GameFiles/MetaTypes/PsoBuilder.cs index 8f5c449..680debe 100644 --- a/CodeWalker.Core/GameFiles/MetaTypes/PsoBuilder.cs +++ b/CodeWalker.Core/GameFiles/MetaTypes/PsoBuilder.cs @@ -54,13 +54,13 @@ namespace CodeWalker.GameFiles { PsoBuilderBlock block = EnsureBlock(type); int brem = data.Length % 16; - if (brem > 0) - { - int newlen = data.Length - brem + 16; - byte[] newdata = new byte[newlen]; - Buffer.BlockCopy(data, 0, newdata, 0, data.Length); - data = newdata; //make sure item size is multiple of 16... so pointers don't need sub offsets! - } + //if (brem > 0) + //{ + // int newlen = data.Length - brem + 16; + // byte[] newdata = new byte[newlen]; + // Buffer.BlockCopy(data, 0, newdata, 0, data.Length); + // data = newdata; //make sure item size is multiple of 16... so pointers don't need sub offsets! + //} int idx = block.AddItem(data); PsoBuilderPointer r = new PsoBuilderPointer(); r.BlockID = block.Index + 1; diff --git a/CodeWalker.Core/GameFiles/MetaTypes/PsoTypes.cs b/CodeWalker.Core/GameFiles/MetaTypes/PsoTypes.cs index 1a0bbd9..60516be 100644 --- a/CodeWalker.Core/GameFiles/MetaTypes/PsoTypes.cs +++ b/CodeWalker.Core/GameFiles/MetaTypes/PsoTypes.cs @@ -9942,7 +9942,8 @@ namespace CodeWalker.GameFiles new PsoStructureEntryInfo(MetaName.MpActivationModifiers, PsoDataType.Structure, 272, 0, (MetaName)2720813484), new PsoStructureEntryInfo(MetaName.PlayerBumpedByCloneCarActivationModifier, PsoDataType.Float, 352, 0, 0), new PsoStructureEntryInfo(MetaName.ClonePlayerBumpedByCarActivationModifier, PsoDataType.Float, 356, 0, 0), - new PsoStructureEntryInfo(MetaName.ClonePlayerBumpedByCloneCarActivationModifier, PsoDataType.Float, 360, 0, 0), + //new PsoStructureEntryInfo(MetaName.ClonePlayerBumpedByCloneCarActivationModifier, PsoDataType.Float, 360, 0, 0), + new PsoStructureEntryInfo((MetaName)2048881690, PsoDataType.Float, 360, 0, 0), //seems to be newer than above.. new PsoStructureEntryInfo(MetaName.MaxVehicleCapsulePushTimeForRagdollActivation, PsoDataType.Float, 364, 0, 0), new PsoStructureEntryInfo(MetaName.MaxVehicleCapsulePushTimeForPlayerRagdollActivation, PsoDataType.Float, 368, 0, 0), new PsoStructureEntryInfo(MetaName.VehicleMinSpeedForContinuousPushActivation, PsoDataType.Float, 372, 0, 0), diff --git a/Rendering/Renderable.cs b/Rendering/Renderable.cs index 978dc0f..0f155ca 100644 --- a/Rendering/Renderable.cs +++ b/Rendering/Renderable.cs @@ -185,38 +185,33 @@ namespace CodeWalker.Rendering fragoffset = phys.OwnerFragPhysLod.Unknown_30h; fragoffset.W = 0.0f; - if (fragtransformid < phys.OwnerFragPhysLod.Children?.data_items?.Length) + + switch (phys.BoneTag) //right hand side wheel flip! { - var pgrp = phys.OwnerFragPhysLod.Children.data_items[fragtransformid]; - - switch (pgrp.BoneTag) //right hand side wheel flip! - { - //case 27922: //wheel_lf - //case 29921: //wheel_lm1 - //case 29922: //wheel_lm2 - //case 29923: //wheel_lm3 - //case 27902: //wheel_lr - case 26418: //wheel_rf - case 5857: //wheel_rm1 - case 5858: //wheel_rm2 - case 5859: //wheel_rm3 - case 26398: //wheel_rr - fragtransforms[fragtransformid].M11 = -1; - fragtransforms[fragtransformid].M12 = 0; - fragtransforms[fragtransformid].M13 = 0; - fragtransforms[fragtransformid].M21 = 0; - fragtransforms[fragtransformid].M22 = 1; - fragtransforms[fragtransformid].M23 = 0; - fragtransforms[fragtransformid].M31 = 0; - fragtransforms[fragtransformid].M32 = 0; - fragtransforms[fragtransformid].M33 = -1; - break; - default: - break; - } + //case 27922: //wheel_lf + //case 29921: //wheel_lm1 + //case 29922: //wheel_lm2 + //case 29923: //wheel_lm3 + //case 27902: //wheel_lr + case 26418: //wheel_rf + case 5857: //wheel_rm1 + case 5858: //wheel_rm2 + case 5859: //wheel_rm3 + case 26398: //wheel_rr + fragtransforms[fragtransformid].M11 = -1; + fragtransforms[fragtransformid].M12 = 0; + fragtransforms[fragtransformid].M13 = 0; + fragtransforms[fragtransformid].M21 = 0; + fragtransforms[fragtransformid].M22 = 1; + fragtransforms[fragtransformid].M23 = 0; + fragtransforms[fragtransformid].M31 = 0; + fragtransforms[fragtransformid].M32 = 0; + fragtransforms[fragtransformid].M33 = -1; + break; + default: + break; } - } } else if (frag != null)