mirror of
https://mirror.ghproxy.com/https://github.com/dexyfex/CodeWalker
synced 2024-11-21 22:42:54 +08:00
Vehicle viewer progress
This commit is contained in:
parent
719631580c
commit
187f8379cd
@ -37,9 +37,9 @@ namespace CodeWalker.GameFiles
|
||||
{
|
||||
Fragment.Drawable.Owner = this;
|
||||
}
|
||||
if (Fragment.Unknown_F8h_Data != null)
|
||||
if (Fragment.Drawable2 != null)
|
||||
{
|
||||
Fragment.Unknown_F8h_Data.Owner = this;
|
||||
Fragment.Drawable2.Owner = this;
|
||||
}
|
||||
|
||||
Loaded = true;
|
||||
|
@ -1373,6 +1373,8 @@ namespace CodeWalker.GameFiles
|
||||
public void InitStringDicts()
|
||||
{
|
||||
string langstr = "american_rel"; //todo: make this variable?
|
||||
string langstr2 = "americandlc.rpf";
|
||||
string langstr3 = "american.rpf";
|
||||
|
||||
if (!DoFullStringIndex)
|
||||
{
|
||||
@ -1395,7 +1397,8 @@ namespace CodeWalker.GameFiles
|
||||
{
|
||||
foreach (var entry in rpf.AllEntries)
|
||||
{
|
||||
if (entry.NameLower.EndsWith(".gxt2") && entry.Path.Contains(langstr))
|
||||
var p = entry.Path;
|
||||
if (entry.NameLower.EndsWith(".gxt2") && (p.Contains(langstr)|| p.Contains(langstr2)|| p.Contains(langstr3)))
|
||||
{
|
||||
var gxt2 = RpfMan.GetFile<Gxt2File>(entry);
|
||||
if (gxt2 != null)
|
||||
@ -2634,6 +2637,12 @@ namespace CodeWalker.GameFiles
|
||||
diffpsos.Add(fentry.Path);
|
||||
}
|
||||
|
||||
if (entry.NameLower == "wantedtuning.ymt")
|
||||
{ }
|
||||
if (entry.NameLower == "popgroups.ymt")
|
||||
{ }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -654,16 +654,19 @@ namespace CodeWalker.GameFiles
|
||||
var list = new List<uint>();
|
||||
var mloarch = Owner?.Archetype as MloArchetype;
|
||||
|
||||
for (uint i = 0; i < mloarch.entitySets.Length; i++)
|
||||
if (mloarch?.entitySets != null)
|
||||
{
|
||||
var entset = mloarch.entitySets[i];
|
||||
MloInstanceEntitySet instset = null;
|
||||
EntitySets.TryGetValue(entset._Data.name, out instset);
|
||||
if (instset != null)
|
||||
for (uint i = 0; i < mloarch.entitySets.Length; i++)
|
||||
{
|
||||
if (instset.Visible)
|
||||
var entset = mloarch.entitySets[i];
|
||||
MloInstanceEntitySet instset = null;
|
||||
EntitySets.TryGetValue(entset._Data.name, out instset);
|
||||
if (instset != null)
|
||||
{
|
||||
list.Add(i);
|
||||
if (instset.Visible)
|
||||
{
|
||||
list.Add(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ namespace CodeWalker.GameFiles
|
||||
public uint Unknown_E8h { get; set; } // 0x00000000
|
||||
public uint Unknown_ECh { get; set; } // 0x00000000
|
||||
public ulong PhysicsLODGroupPointer { get; set; }
|
||||
public ulong Unknown_F8h_Pointer { get; set; }
|
||||
public ulong Drawable2Pointer { get; set; }
|
||||
public uint Unknown_100h { get; set; } // 0x00000000
|
||||
public uint Unknown_104h { get; set; } // 0x00000000
|
||||
public uint Unknown_108h { get; set; } // 0x00000000
|
||||
@ -116,7 +116,7 @@ namespace CodeWalker.GameFiles
|
||||
public FragUnknown_F_004 Unknown_A8h_Data { get; set; }
|
||||
public ResourcePointerArray64<FragUnknown_F_006> Unknown_E0h_Data { get; set; }
|
||||
public FragPhysicsLODGroup PhysicsLODGroup { get; set; }
|
||||
public FragDrawable Unknown_F8h_Data { get; set; }
|
||||
public FragDrawable Drawable2 { get; set; }
|
||||
public FragUnknown_F_003 Unknown_120h_Data { get; set; }
|
||||
|
||||
/// <summary>
|
||||
@ -177,7 +177,7 @@ namespace CodeWalker.GameFiles
|
||||
this.Unknown_E8h = reader.ReadUInt32();
|
||||
this.Unknown_ECh = reader.ReadUInt32();
|
||||
this.PhysicsLODGroupPointer = reader.ReadUInt64();
|
||||
this.Unknown_F8h_Pointer = reader.ReadUInt64();
|
||||
this.Drawable2Pointer = reader.ReadUInt64();
|
||||
this.Unknown_100h = reader.ReadUInt32();
|
||||
this.Unknown_104h = reader.ReadUInt32();
|
||||
this.Unknown_108h = reader.ReadUInt32();
|
||||
@ -230,12 +230,12 @@ namespace CodeWalker.GameFiles
|
||||
this.PhysicsLODGroup = reader.ReadBlockAt<FragPhysicsLODGroup>(
|
||||
this.PhysicsLODGroupPointer // offset
|
||||
);
|
||||
this.Unknown_F8h_Data = reader.ReadBlockAt<FragDrawable>(
|
||||
this.Unknown_F8h_Pointer // offset
|
||||
this.Drawable2 = reader.ReadBlockAt<FragDrawable>(
|
||||
this.Drawable2Pointer // offset
|
||||
);
|
||||
if (this.Unknown_F8h_Data != null)
|
||||
if (this.Drawable2 != null)
|
||||
{
|
||||
this.Unknown_F8h_Data.OwnerFragment = this;
|
||||
this.Drawable2.OwnerFragment = this;
|
||||
}
|
||||
|
||||
this.Unknown_120h_Data = reader.ReadBlockAt<FragUnknown_F_003>(
|
||||
@ -283,7 +283,7 @@ namespace CodeWalker.GameFiles
|
||||
//this.anotherCount = (byte)(this.pxxxxx_3data != null ? this.pxxxxx_3data.Count : 0);
|
||||
this.Unknown_E0h_Pointer = (ulong)(this.Unknown_E0h_Data != null ? this.Unknown_E0h_Data.FilePosition : 0);
|
||||
this.PhysicsLODGroupPointer = (ulong)(this.PhysicsLODGroup != null ? this.PhysicsLODGroup.FilePosition : 0);
|
||||
this.Unknown_F8h_Pointer = (ulong)(this.Unknown_F8h_Data != null ? this.Unknown_F8h_Data.FilePosition : 0);
|
||||
this.Drawable2Pointer = (ulong)(this.Drawable2 != null ? this.Drawable2.FilePosition : 0);
|
||||
//this.cntxx51a = (ushort)(this.pxxxxx_5data != null ? this.pxxxxx_5data.Count : 0);
|
||||
this.Unknown_120h_Pointer = (ulong)(this.Unknown_120h_Data != null ? this.Unknown_120h_Data.FilePosition : 0);
|
||||
|
||||
@ -338,7 +338,7 @@ namespace CodeWalker.GameFiles
|
||||
writer.Write(this.Unknown_E8h);
|
||||
writer.Write(this.Unknown_ECh);
|
||||
writer.Write(this.PhysicsLODGroupPointer);
|
||||
writer.Write(this.Unknown_F8h_Pointer);
|
||||
writer.Write(this.Drawable2Pointer);
|
||||
writer.Write(this.Unknown_100h);
|
||||
writer.Write(this.Unknown_104h);
|
||||
writer.Write(this.Unknown_108h);
|
||||
@ -362,7 +362,7 @@ namespace CodeWalker.GameFiles
|
||||
if (Unknown_A8h_Data != null) list.Add(Unknown_A8h_Data);
|
||||
if (Unknown_E0h_Data != null) list.Add(Unknown_E0h_Data);
|
||||
if (PhysicsLODGroup != null) list.Add(PhysicsLODGroup);
|
||||
if (Unknown_F8h_Data != null) list.Add(Unknown_F8h_Data);
|
||||
if (Drawable2 != null) list.Add(Drawable2);
|
||||
if (Unknown_120h_Data != null) list.Add(Unknown_120h_Data);
|
||||
return list.ToArray();
|
||||
}
|
||||
@ -2451,6 +2451,14 @@ namespace CodeWalker.GameFiles
|
||||
var child = Children.data_items[i];
|
||||
child.OwnerFragPhysLod = this;
|
||||
child.OwnerFragPhysIndex = i;
|
||||
|
||||
if ((Groups?.data_items != null) && (i < Groups.data_items.Length))
|
||||
{
|
||||
var group = Groups.data_items[i];
|
||||
var str = group.Name.ToString().ToLowerInvariant();
|
||||
JenkIndex.Ensure(str);
|
||||
child.GroupNameHash = JenkHash.GenHash(str);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3350,7 +3358,8 @@ namespace CodeWalker.GameFiles
|
||||
public uint Unknown_04h { get; set; } // 0x00000001
|
||||
public float Unknown_08h { get; set; }
|
||||
public float Unknown_0Ch { get; set; }
|
||||
public float Unknown_10h { get; set; }
|
||||
public ushort BoneIndex { get; set; }
|
||||
public ushort BoneTag { get; set; }
|
||||
public uint Unknown_14h { get; set; } // 0x00000000
|
||||
public uint Unknown_18h { get; set; } // 0x00000000
|
||||
public uint Unknown_1Ch { get; set; } // 0x00000000
|
||||
@ -3417,6 +3426,7 @@ namespace CodeWalker.GameFiles
|
||||
|
||||
public FragPhysicsLOD OwnerFragPhysLod { get; set; }
|
||||
public int OwnerFragPhysIndex { get; set; }
|
||||
public MetaHash GroupNameHash { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Reads the data-block from a stream.
|
||||
@ -3428,7 +3438,8 @@ namespace CodeWalker.GameFiles
|
||||
this.Unknown_04h = reader.ReadUInt32();
|
||||
this.Unknown_08h = reader.ReadSingle();
|
||||
this.Unknown_0Ch = reader.ReadSingle();
|
||||
this.Unknown_10h = reader.ReadSingle();
|
||||
this.BoneIndex = reader.ReadUInt16();
|
||||
this.BoneTag = reader.ReadUInt16();
|
||||
this.Unknown_14h = reader.ReadUInt32();
|
||||
this.Unknown_18h = reader.ReadUInt32();
|
||||
this.Unknown_1Ch = reader.ReadUInt32();
|
||||
@ -3523,7 +3534,8 @@ namespace CodeWalker.GameFiles
|
||||
writer.Write(this.Unknown_04h);
|
||||
writer.Write(this.Unknown_08h);
|
||||
writer.Write(this.Unknown_0Ch);
|
||||
writer.Write(this.Unknown_10h);
|
||||
writer.Write(this.BoneIndex);
|
||||
writer.Write(this.BoneTag);
|
||||
writer.Write(this.Unknown_14h);
|
||||
writer.Write(this.Unknown_18h);
|
||||
writer.Write(this.Unknown_1Ch);
|
||||
@ -3593,6 +3605,12 @@ namespace CodeWalker.GameFiles
|
||||
if (EvtSet != null) list.Add(EvtSet);
|
||||
return list.ToArray();
|
||||
}
|
||||
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return GroupNameHash.ToString();
|
||||
}
|
||||
}
|
||||
[TypeConverter(typeof(ExpandableObjectConverter))] public class FragPhysEvtSet : ResourceSystemBlock
|
||||
{
|
||||
|
@ -824,6 +824,30 @@ namespace CodeWalker.Forms
|
||||
AddDrawableModelsTreeNodes(drawable.DrawableModelsLow, "Low Detail", false);
|
||||
AddDrawableModelsTreeNodes(drawable.DrawableModelsVeryLow, "Very Low Detail", false);
|
||||
//AddSelectionDrawableModelsTreeNodes(item.Drawable.DrawableModelsX, "X Detail", false);
|
||||
|
||||
var fdrawable = drawable as FragDrawable;
|
||||
if (fdrawable != null)
|
||||
{
|
||||
var plod1 = fdrawable.OwnerFragment?.PhysicsLODGroup?.PhysicsLOD1;
|
||||
if ((plod1 != null) && (plod1.Children?.data_items != null))
|
||||
{
|
||||
foreach (var child in plod1.Children.data_items)
|
||||
{
|
||||
var cdrwbl = child.Drawable1;
|
||||
if ((cdrwbl != null) && (cdrwbl.AllModels?.Length > 0))
|
||||
{
|
||||
if (cdrwbl.Owner is FragDrawable) continue; //it's a copied drawable... eg a wheel
|
||||
|
||||
var dname = child.GroupNameHash.ToString();
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsHigh, dname + " - High Detail", true);
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsMedium, dname + " - Medium Detail", false);
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsLow, dname + " - Low Detail", false);
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsVeryLow, dname + " - Very Low Detail", false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
private void UpdateModelsUI(FragType frag)
|
||||
@ -845,6 +869,29 @@ namespace CodeWalker.Forms
|
||||
AddDrawableModelsTreeNodes(drawable.DrawableModelsLow, "Low Detail", false);
|
||||
AddDrawableModelsTreeNodes(drawable.DrawableModelsVeryLow, "Very Low Detail", false);
|
||||
//AddSelectionDrawableModelsTreeNodes(item.Drawable.DrawableModelsX, "X Detail", false);
|
||||
|
||||
var fdrawable = drawable as FragDrawable;
|
||||
if (fdrawable != null)
|
||||
{
|
||||
var plod1 = fdrawable.OwnerFragment?.PhysicsLODGroup?.PhysicsLOD1;
|
||||
if ((plod1 != null) && (plod1.Children?.data_items != null))
|
||||
{
|
||||
foreach (var child in plod1.Children.data_items)
|
||||
{
|
||||
var cdrwbl = child.Drawable1;
|
||||
if ((cdrwbl != null) && (cdrwbl.AllModels?.Length > 0))
|
||||
{
|
||||
if (cdrwbl.Owner is FragDrawable) continue; //it's a copied drawable... eg a wheel
|
||||
|
||||
var dname = child.GroupNameHash.ToString();
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsHigh, dname + " - High Detail", true);
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsMedium, dname + " - Medium Detail", false);
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsLow, dname + " - Low Detail", false);
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsVeryLow, dname + " - Very Low Detail", false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void UpdateModelsUI(Dictionary<uint, Drawable> dict)
|
||||
|
@ -2211,23 +2211,59 @@ namespace CodeWalker.Rendering
|
||||
|
||||
RenderDrawable(f.Drawable, arch, ent, txdhash);
|
||||
|
||||
if (f.Unknown_F8h_Data != null) //cloth
|
||||
if (f.Drawable2 != null) //cloth
|
||||
{
|
||||
RenderDrawable(f.Unknown_F8h_Data, arch, ent, txdhash);
|
||||
RenderDrawable(f.Drawable2, arch, ent, txdhash);
|
||||
}
|
||||
|
||||
//vehicle wheels...
|
||||
if ((f.PhysicsLODGroup != null) && (f.PhysicsLODGroup.PhysicsLOD1 != null))
|
||||
{
|
||||
var pl1 = f.PhysicsLODGroup.PhysicsLOD1;
|
||||
if ((pl1.Children != null) && (pl1.Children.data_items != null))
|
||||
//var groupnames = pl1?.GroupNames?.data_items;
|
||||
var groups = pl1?.Groups?.data_items;
|
||||
|
||||
FragDrawable wheel_f = null;
|
||||
FragDrawable wheel_r = null;
|
||||
|
||||
if (pl1.Children?.data_items != null)
|
||||
{
|
||||
for (int i = 0; i < pl1.Children.data_items.Length; i++)
|
||||
{
|
||||
var pch = pl1.Children.data_items[i];
|
||||
|
||||
//var groupname = pch.GroupNameHash;
|
||||
//if ((pl1.Groups?.data_items != null) && (i < pl1.Groups.data_items.Length))
|
||||
//{
|
||||
// //var group = pl1.Groups.data_items[i];
|
||||
//}
|
||||
|
||||
if ((pch.Drawable1 != null) && (pch.Drawable1.AllModels.Length != 0))
|
||||
{
|
||||
RenderDrawable(pch.Drawable1, arch, ent, txdhash);
|
||||
|
||||
switch (pch.BoneTag)
|
||||
{
|
||||
case 27922: //wheel_lf
|
||||
case 26418: //wheel_rf
|
||||
wheel_f = pch.Drawable1;
|
||||
break;
|
||||
case 29921: //wheel_lm1
|
||||
case 29922: //wheel_lm2
|
||||
case 29923: //wheel_lm3
|
||||
case 27902: //wheel_lr
|
||||
case 5857: //wheel_rm1
|
||||
case 5858: //wheel_rm2
|
||||
case 5859: //wheel_rm3
|
||||
case 26398: //wheel_rr
|
||||
wheel_r = pch.Drawable1;
|
||||
break;
|
||||
default:
|
||||
|
||||
RenderDrawable(pch.Drawable1, arch, ent, txdhash);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{ }
|
||||
@ -2238,6 +2274,79 @@ namespace CodeWalker.Rendering
|
||||
else
|
||||
{ }
|
||||
}
|
||||
|
||||
if ((wheel_f != null) || (wheel_r != null))
|
||||
{
|
||||
for (int i = 0; i < pl1.Children.data_items.Length; i++)
|
||||
{
|
||||
var pch = pl1.Children.data_items[i];
|
||||
FragDrawable dwbl = pch.Drawable1;
|
||||
FragDrawable dwblcopy = null;
|
||||
switch (pch.BoneTag)
|
||||
{
|
||||
case 27922: //wheel_lf
|
||||
case 26418: //wheel_rf
|
||||
dwblcopy = wheel_f != null ? wheel_f : wheel_r;
|
||||
break;
|
||||
case 29921: //wheel_lm1
|
||||
case 29922: //wheel_lm2
|
||||
case 29923: //wheel_lm3
|
||||
case 27902: //wheel_lr
|
||||
case 5857: //wheel_rm1
|
||||
case 5858: //wheel_rm2
|
||||
case 5859: //wheel_rm3
|
||||
case 26398: //wheel_rr
|
||||
dwblcopy = wheel_r != null ? wheel_r : wheel_f;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//switch (pch.GroupNameHash)
|
||||
//{
|
||||
// case 3311608449: //wheel_lf
|
||||
// case 1705452237: //wheel_lm1
|
||||
// case 1415282742: //wheel_lm2
|
||||
// case 3392433122: //wheel_lm3
|
||||
// case 133671269: //wheel_rf
|
||||
// case 2908525601: //wheel_rm1
|
||||
// case 2835549038: //wheel_rm2
|
||||
// case 4148013026: //wheel_rm3
|
||||
// dwblcopy = wheel_f != null ? wheel_f : wheel_r;
|
||||
// break;
|
||||
// case 1695736278: //wheel_lr
|
||||
// case 1670111368: //wheel_rr
|
||||
// dwblcopy = wheel_r != null ? wheel_r : wheel_f;
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
//}
|
||||
|
||||
if (dwblcopy != null)
|
||||
{
|
||||
if (dwbl != null)
|
||||
{
|
||||
if ((dwbl != dwblcopy) && (dwbl.AllModels.Length == 0))
|
||||
{
|
||||
dwbl.Owner = dwblcopy;
|
||||
dwbl.AllModels = dwblcopy.AllModels;
|
||||
dwbl.DrawableModelsHigh = dwblcopy.DrawableModelsHigh;
|
||||
dwbl.DrawableModelsMedium = dwblcopy.DrawableModelsMedium;
|
||||
dwbl.DrawableModelsLow = dwblcopy.DrawableModelsLow;
|
||||
dwbl.DrawableModelsVeryLow = dwblcopy.DrawableModelsVeryLow;
|
||||
dwbl.VertexDecls = dwblcopy.VertexDecls;
|
||||
}
|
||||
|
||||
RenderDrawable(dwbl, arch, ent, txdhash);
|
||||
|
||||
}
|
||||
else
|
||||
{ }
|
||||
}
|
||||
else
|
||||
{ }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -2321,9 +2430,9 @@ namespace CodeWalker.Rendering
|
||||
if (fd != null)
|
||||
{
|
||||
var frag = fd.OwnerFragment;
|
||||
if ((frag != null) && (frag.Unknown_F8h_Data != null)) //cloth...
|
||||
if ((frag != null) && (frag.Drawable2 != null)) //cloth...
|
||||
{
|
||||
rndbl = TryGetRenderable(arche, frag.Unknown_F8h_Data);
|
||||
rndbl = TryGetRenderable(arche, frag.Drawable2);
|
||||
if (rndbl != null)
|
||||
{
|
||||
bool res2 = RenderRenderable(rndbl, arche, entity);
|
||||
|
165
Vehicles/VehicleForm.Designer.cs
generated
165
Vehicles/VehicleForm.Designer.cs
generated
@ -37,7 +37,11 @@
|
||||
this.StatsUpdateTimer = new System.Windows.Forms.Timer(this.components);
|
||||
this.ToolsPanel = new System.Windows.Forms.Panel();
|
||||
this.ToolsTabControl = new System.Windows.Forms.TabControl();
|
||||
this.ToolsVehicleTabPage = new System.Windows.Forms.TabPage();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.VehicleModelComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.ToolsModelsTabPage = new System.Windows.Forms.TabPage();
|
||||
this.ModelsTreeView = new CodeWalker.WinForms.TreeViewFix();
|
||||
this.ToolsTexturesTabPage = new System.Windows.Forms.TabPage();
|
||||
this.TextureViewerButton = new System.Windows.Forms.Button();
|
||||
this.TexturesTreeView = new CodeWalker.WinForms.TreeViewFix();
|
||||
@ -71,13 +75,18 @@
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.ToolsPanelHideButton = new System.Windows.Forms.Button();
|
||||
this.ToolsDragPanel = new System.Windows.Forms.Panel();
|
||||
this.ModelsTreeView = new CodeWalker.WinForms.TreeViewFix();
|
||||
this.ToolsPanelShowButton = new System.Windows.Forms.Button();
|
||||
this.ConsolePanel = new System.Windows.Forms.Panel();
|
||||
this.ConsoleTextBox = new CodeWalker.WinForms.TextBoxFix();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.VehicleMakeLabel = new System.Windows.Forms.Label();
|
||||
this.VehicleNameLabel = new System.Windows.Forms.Label();
|
||||
this.VehicleHighDetailCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.StatusStrip.SuspendLayout();
|
||||
this.ToolsPanel.SuspendLayout();
|
||||
this.ToolsTabControl.SuspendLayout();
|
||||
this.ToolsVehicleTabPage.SuspendLayout();
|
||||
this.ToolsModelsTabPage.SuspendLayout();
|
||||
this.ToolsTexturesTabPage.SuspendLayout();
|
||||
this.ToolsDetailsTabPage.SuspendLayout();
|
||||
@ -138,7 +147,7 @@
|
||||
this.ToolsPanel.Controls.Add(this.ToolsDragPanel);
|
||||
this.ToolsPanel.Location = new System.Drawing.Point(12, 12);
|
||||
this.ToolsPanel.Name = "ToolsPanel";
|
||||
this.ToolsPanel.Size = new System.Drawing.Size(233, 666);
|
||||
this.ToolsPanel.Size = new System.Drawing.Size(252, 666);
|
||||
this.ToolsPanel.TabIndex = 3;
|
||||
this.ToolsPanel.Visible = false;
|
||||
//
|
||||
@ -147,6 +156,7 @@
|
||||
this.ToolsTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ToolsTabControl.Controls.Add(this.ToolsVehicleTabPage);
|
||||
this.ToolsTabControl.Controls.Add(this.ToolsModelsTabPage);
|
||||
this.ToolsTabControl.Controls.Add(this.ToolsTexturesTabPage);
|
||||
this.ToolsTabControl.Controls.Add(this.ToolsDetailsTabPage);
|
||||
@ -154,20 +164,73 @@
|
||||
this.ToolsTabControl.Location = new System.Drawing.Point(2, 30);
|
||||
this.ToolsTabControl.Name = "ToolsTabControl";
|
||||
this.ToolsTabControl.SelectedIndex = 0;
|
||||
this.ToolsTabControl.Size = new System.Drawing.Size(228, 633);
|
||||
this.ToolsTabControl.Size = new System.Drawing.Size(247, 633);
|
||||
this.ToolsTabControl.TabIndex = 1;
|
||||
//
|
||||
// ToolsVehicleTabPage
|
||||
//
|
||||
this.ToolsVehicleTabPage.Controls.Add(this.VehicleHighDetailCheckBox);
|
||||
this.ToolsVehicleTabPage.Controls.Add(this.VehicleNameLabel);
|
||||
this.ToolsVehicleTabPage.Controls.Add(this.VehicleMakeLabel);
|
||||
this.ToolsVehicleTabPage.Controls.Add(this.label5);
|
||||
this.ToolsVehicleTabPage.Controls.Add(this.label4);
|
||||
this.ToolsVehicleTabPage.Controls.Add(this.label3);
|
||||
this.ToolsVehicleTabPage.Controls.Add(this.VehicleModelComboBox);
|
||||
this.ToolsVehicleTabPage.Location = new System.Drawing.Point(4, 22);
|
||||
this.ToolsVehicleTabPage.Name = "ToolsVehicleTabPage";
|
||||
this.ToolsVehicleTabPage.Size = new System.Drawing.Size(239, 607);
|
||||
this.ToolsVehicleTabPage.TabIndex = 4;
|
||||
this.ToolsVehicleTabPage.Text = "Vehicle";
|
||||
this.ToolsVehicleTabPage.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(3, 11);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(39, 13);
|
||||
this.label3.TabIndex = 1;
|
||||
this.label3.Text = "Model:";
|
||||
//
|
||||
// VehicleModelComboBox
|
||||
//
|
||||
this.VehicleModelComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.VehicleModelComboBox.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
|
||||
this.VehicleModelComboBox.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
|
||||
this.VehicleModelComboBox.FormattingEnabled = true;
|
||||
this.VehicleModelComboBox.Location = new System.Drawing.Point(54, 8);
|
||||
this.VehicleModelComboBox.Name = "VehicleModelComboBox";
|
||||
this.VehicleModelComboBox.Size = new System.Drawing.Size(182, 21);
|
||||
this.VehicleModelComboBox.TabIndex = 0;
|
||||
this.VehicleModelComboBox.TextChanged += new System.EventHandler(this.VehicleModelComboBox_TextChanged);
|
||||
//
|
||||
// ToolsModelsTabPage
|
||||
//
|
||||
this.ToolsModelsTabPage.Controls.Add(this.ModelsTreeView);
|
||||
this.ToolsModelsTabPage.Location = new System.Drawing.Point(4, 22);
|
||||
this.ToolsModelsTabPage.Name = "ToolsModelsTabPage";
|
||||
this.ToolsModelsTabPage.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.ToolsModelsTabPage.Size = new System.Drawing.Size(220, 607);
|
||||
this.ToolsModelsTabPage.Size = new System.Drawing.Size(239, 607);
|
||||
this.ToolsModelsTabPage.TabIndex = 0;
|
||||
this.ToolsModelsTabPage.Text = "Models";
|
||||
this.ToolsModelsTabPage.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// ModelsTreeView
|
||||
//
|
||||
this.ModelsTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ModelsTreeView.CheckBoxes = true;
|
||||
this.ModelsTreeView.Location = new System.Drawing.Point(0, 3);
|
||||
this.ModelsTreeView.Name = "ModelsTreeView";
|
||||
this.ModelsTreeView.ShowRootLines = false;
|
||||
this.ModelsTreeView.Size = new System.Drawing.Size(239, 604);
|
||||
this.ModelsTreeView.TabIndex = 2;
|
||||
this.ModelsTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.ModelsTreeView_AfterCheck);
|
||||
this.ModelsTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.ModelsTreeView_NodeMouseDoubleClick);
|
||||
this.ModelsTreeView.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ModelsTreeView_KeyPress);
|
||||
//
|
||||
// ToolsTexturesTabPage
|
||||
//
|
||||
this.ToolsTexturesTabPage.Controls.Add(this.TextureViewerButton);
|
||||
@ -175,7 +238,7 @@
|
||||
this.ToolsTexturesTabPage.Location = new System.Drawing.Point(4, 22);
|
||||
this.ToolsTexturesTabPage.Name = "ToolsTexturesTabPage";
|
||||
this.ToolsTexturesTabPage.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.ToolsTexturesTabPage.Size = new System.Drawing.Size(220, 607);
|
||||
this.ToolsTexturesTabPage.Size = new System.Drawing.Size(239, 607);
|
||||
this.ToolsTexturesTabPage.TabIndex = 1;
|
||||
this.ToolsTexturesTabPage.Text = "Textures";
|
||||
this.ToolsTexturesTabPage.UseVisualStyleBackColor = true;
|
||||
@ -198,7 +261,7 @@
|
||||
this.TexturesTreeView.Location = new System.Drawing.Point(0, 34);
|
||||
this.TexturesTreeView.Name = "TexturesTreeView";
|
||||
this.TexturesTreeView.ShowRootLines = false;
|
||||
this.TexturesTreeView.Size = new System.Drawing.Size(220, 573);
|
||||
this.TexturesTreeView.Size = new System.Drawing.Size(239, 573);
|
||||
this.TexturesTreeView.TabIndex = 1;
|
||||
//
|
||||
// ToolsDetailsTabPage
|
||||
@ -206,7 +269,7 @@
|
||||
this.ToolsDetailsTabPage.Controls.Add(this.DetailsPropertyGrid);
|
||||
this.ToolsDetailsTabPage.Location = new System.Drawing.Point(4, 22);
|
||||
this.ToolsDetailsTabPage.Name = "ToolsDetailsTabPage";
|
||||
this.ToolsDetailsTabPage.Size = new System.Drawing.Size(220, 607);
|
||||
this.ToolsDetailsTabPage.Size = new System.Drawing.Size(239, 607);
|
||||
this.ToolsDetailsTabPage.TabIndex = 2;
|
||||
this.ToolsDetailsTabPage.Text = "Details";
|
||||
this.ToolsDetailsTabPage.UseVisualStyleBackColor = true;
|
||||
@ -221,7 +284,7 @@
|
||||
this.DetailsPropertyGrid.Name = "DetailsPropertyGrid";
|
||||
this.DetailsPropertyGrid.PropertySort = System.Windows.Forms.PropertySort.NoSort;
|
||||
this.DetailsPropertyGrid.ReadOnly = true;
|
||||
this.DetailsPropertyGrid.Size = new System.Drawing.Size(220, 604);
|
||||
this.DetailsPropertyGrid.Size = new System.Drawing.Size(239, 604);
|
||||
this.DetailsPropertyGrid.TabIndex = 1;
|
||||
this.DetailsPropertyGrid.ToolbarVisible = false;
|
||||
//
|
||||
@ -254,7 +317,7 @@
|
||||
this.ToolsOptionsTabPage.Controls.Add(this.label14);
|
||||
this.ToolsOptionsTabPage.Location = new System.Drawing.Point(4, 22);
|
||||
this.ToolsOptionsTabPage.Name = "ToolsOptionsTabPage";
|
||||
this.ToolsOptionsTabPage.Size = new System.Drawing.Size(220, 607);
|
||||
this.ToolsOptionsTabPage.Size = new System.Drawing.Size(239, 607);
|
||||
this.ToolsOptionsTabPage.TabIndex = 3;
|
||||
this.ToolsOptionsTabPage.Text = "Options";
|
||||
this.ToolsOptionsTabPage.UseVisualStyleBackColor = true;
|
||||
@ -310,7 +373,7 @@
|
||||
this.TimeOfDayTrackBar.Location = new System.Drawing.Point(9, 125);
|
||||
this.TimeOfDayTrackBar.Maximum = 1440;
|
||||
this.TimeOfDayTrackBar.Name = "TimeOfDayTrackBar";
|
||||
this.TimeOfDayTrackBar.Size = new System.Drawing.Size(203, 45);
|
||||
this.TimeOfDayTrackBar.Size = new System.Drawing.Size(222, 45);
|
||||
this.TimeOfDayTrackBar.TabIndex = 6;
|
||||
this.TimeOfDayTrackBar.TickFrequency = 60;
|
||||
this.TimeOfDayTrackBar.Value = 720;
|
||||
@ -570,7 +633,7 @@
|
||||
this.ToolsDragPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ToolsDragPanel.Cursor = System.Windows.Forms.Cursors.VSplit;
|
||||
this.ToolsDragPanel.Location = new System.Drawing.Point(230, 0);
|
||||
this.ToolsDragPanel.Location = new System.Drawing.Point(249, 0);
|
||||
this.ToolsDragPanel.Name = "ToolsDragPanel";
|
||||
this.ToolsDragPanel.Size = new System.Drawing.Size(4, 666);
|
||||
this.ToolsDragPanel.TabIndex = 17;
|
||||
@ -578,21 +641,6 @@
|
||||
this.ToolsDragPanel.MouseMove += new System.Windows.Forms.MouseEventHandler(this.ToolsDragPanel_MouseMove);
|
||||
this.ToolsDragPanel.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ToolsDragPanel_MouseUp);
|
||||
//
|
||||
// ModelsTreeView
|
||||
//
|
||||
this.ModelsTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ModelsTreeView.CheckBoxes = true;
|
||||
this.ModelsTreeView.Location = new System.Drawing.Point(0, 3);
|
||||
this.ModelsTreeView.Name = "ModelsTreeView";
|
||||
this.ModelsTreeView.ShowRootLines = false;
|
||||
this.ModelsTreeView.Size = new System.Drawing.Size(220, 604);
|
||||
this.ModelsTreeView.TabIndex = 2;
|
||||
this.ModelsTreeView.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.ModelsTreeView_AfterCheck);
|
||||
this.ModelsTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.ModelsTreeView_NodeMouseDoubleClick);
|
||||
this.ModelsTreeView.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ModelsTreeView_KeyPress);
|
||||
//
|
||||
// ToolsPanelShowButton
|
||||
//
|
||||
this.ToolsPanelShowButton.Location = new System.Drawing.Point(15, 15);
|
||||
@ -609,9 +657,9 @@
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ConsolePanel.BackColor = System.Drawing.SystemColors.Control;
|
||||
this.ConsolePanel.Controls.Add(this.ConsoleTextBox);
|
||||
this.ConsolePanel.Location = new System.Drawing.Point(252, 577);
|
||||
this.ConsolePanel.Location = new System.Drawing.Point(271, 577);
|
||||
this.ConsolePanel.Name = "ConsolePanel";
|
||||
this.ConsolePanel.Size = new System.Drawing.Size(720, 101);
|
||||
this.ConsolePanel.Size = new System.Drawing.Size(701, 101);
|
||||
this.ConsolePanel.TabIndex = 5;
|
||||
this.ConsolePanel.Visible = false;
|
||||
//
|
||||
@ -624,9 +672,58 @@
|
||||
this.ConsoleTextBox.Multiline = true;
|
||||
this.ConsoleTextBox.Name = "ConsoleTextBox";
|
||||
this.ConsoleTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||
this.ConsoleTextBox.Size = new System.Drawing.Size(714, 95);
|
||||
this.ConsoleTextBox.Size = new System.Drawing.Size(695, 95);
|
||||
this.ConsoleTextBox.TabIndex = 0;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(3, 41);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(37, 13);
|
||||
this.label4.TabIndex = 2;
|
||||
this.label4.Text = "Make:";
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(3, 63);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(38, 13);
|
||||
this.label5.TabIndex = 3;
|
||||
this.label5.Text = "Name:";
|
||||
//
|
||||
// VehicleMakeLabel
|
||||
//
|
||||
this.VehicleMakeLabel.AutoSize = true;
|
||||
this.VehicleMakeLabel.Location = new System.Drawing.Point(51, 41);
|
||||
this.VehicleMakeLabel.Name = "VehicleMakeLabel";
|
||||
this.VehicleMakeLabel.Size = new System.Drawing.Size(10, 13);
|
||||
this.VehicleMakeLabel.TabIndex = 4;
|
||||
this.VehicleMakeLabel.Text = "-";
|
||||
//
|
||||
// VehicleNameLabel
|
||||
//
|
||||
this.VehicleNameLabel.AutoSize = true;
|
||||
this.VehicleNameLabel.Location = new System.Drawing.Point(51, 63);
|
||||
this.VehicleNameLabel.Name = "VehicleNameLabel";
|
||||
this.VehicleNameLabel.Size = new System.Drawing.Size(10, 13);
|
||||
this.VehicleNameLabel.TabIndex = 5;
|
||||
this.VehicleNameLabel.Text = "-";
|
||||
//
|
||||
// VehicleHighDetailCheckBox
|
||||
//
|
||||
this.VehicleHighDetailCheckBox.AutoSize = true;
|
||||
this.VehicleHighDetailCheckBox.Checked = true;
|
||||
this.VehicleHighDetailCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.VehicleHighDetailCheckBox.Location = new System.Drawing.Point(54, 90);
|
||||
this.VehicleHighDetailCheckBox.Name = "VehicleHighDetailCheckBox";
|
||||
this.VehicleHighDetailCheckBox.Size = new System.Drawing.Size(120, 17);
|
||||
this.VehicleHighDetailCheckBox.TabIndex = 6;
|
||||
this.VehicleHighDetailCheckBox.Text = "High detail fragment";
|
||||
this.VehicleHighDetailCheckBox.UseVisualStyleBackColor = true;
|
||||
this.VehicleHighDetailCheckBox.CheckedChanged += new System.EventHandler(this.VehicleHighDetailCheckBox_CheckedChanged);
|
||||
//
|
||||
// VehicleForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@ -652,6 +749,8 @@
|
||||
this.StatusStrip.PerformLayout();
|
||||
this.ToolsPanel.ResumeLayout(false);
|
||||
this.ToolsTabControl.ResumeLayout(false);
|
||||
this.ToolsVehicleTabPage.ResumeLayout(false);
|
||||
this.ToolsVehicleTabPage.PerformLayout();
|
||||
this.ToolsModelsTabPage.ResumeLayout(false);
|
||||
this.ToolsTexturesTabPage.ResumeLayout(false);
|
||||
this.ToolsDetailsTabPage.ResumeLayout(false);
|
||||
@ -712,5 +811,13 @@
|
||||
private System.Windows.Forms.Button ToolsPanelShowButton;
|
||||
private System.Windows.Forms.Panel ConsolePanel;
|
||||
private WinForms.TextBoxFix ConsoleTextBox;
|
||||
private System.Windows.Forms.TabPage ToolsVehicleTabPage;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.ComboBox VehicleModelComboBox;
|
||||
private System.Windows.Forms.Label VehicleNameLabel;
|
||||
private System.Windows.Forms.Label VehicleMakeLabel;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.CheckBox VehicleHighDetailCheckBox;
|
||||
}
|
||||
}
|
@ -75,6 +75,13 @@ namespace CodeWalker.Vehicles
|
||||
|
||||
|
||||
|
||||
MetaHash SelectedVehicleHash = 0;//base vehicle name hash
|
||||
MetaHash SelectedModelHash = 0;//yft name hash, can be _hi
|
||||
VehicleInitData SelectedVehicleInit = null;
|
||||
YftFile SelectedVehicleYft = null;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public VehicleForm()
|
||||
@ -181,18 +188,8 @@ namespace CodeWalker.Vehicles
|
||||
Renderer.SelectedDrawable = null;// SelectedItem.Drawable;
|
||||
|
||||
|
||||
//if (renderworld)
|
||||
//{
|
||||
// RenderWorld();
|
||||
//}
|
||||
//else if (rendermaps)
|
||||
//{
|
||||
// RenderYmaps();
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// RenderSingleItem();
|
||||
//}
|
||||
RenderVehicle();
|
||||
|
||||
//UpdateMouseHitsFromRenderer();
|
||||
//RenderSelection();
|
||||
|
||||
@ -292,12 +289,16 @@ namespace CodeWalker.Vehicles
|
||||
GameFileCache.LoadVehicles = true;
|
||||
GameFileCache.LoadArchetypes = false;//to speed things up a little
|
||||
GameFileCache.BuildExtendedJenkIndex = false;//to speed things up a little
|
||||
GameFileCache.DoFullStringIndex = true;//to get all global text from DLC...
|
||||
GameFileCache.Init(UpdateStatus, LogError);
|
||||
|
||||
//UpdateDlcListComboBox(gameFileCache.DlcNameList);
|
||||
|
||||
//EnableCacheDependentUI();
|
||||
|
||||
UpdateGlobalVehiclesUI();
|
||||
|
||||
|
||||
LoadWorld();
|
||||
|
||||
|
||||
@ -580,6 +581,37 @@ namespace CodeWalker.Vehicles
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void UpdateGlobalVehiclesUI()
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
BeginInvoke(new Action(() => { UpdateGlobalVehiclesUI(); }));
|
||||
}
|
||||
else
|
||||
{
|
||||
VehicleModelComboBox.Items.Clear();
|
||||
|
||||
var vehicles = GameFileCache.VehiclesInitDict.Values.ToList();
|
||||
vehicles.Sort((a, b) => { return a.modelName.CompareTo(b.modelName); });
|
||||
|
||||
foreach (var vehicle in vehicles)
|
||||
{
|
||||
VehicleModelComboBox.Items.Add(vehicle.modelName);
|
||||
}
|
||||
|
||||
if (vehicles.Count > 0)
|
||||
{
|
||||
VehicleModelComboBox.SelectedIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void UpdateModelsUI(DrawableBase drawable)
|
||||
{
|
||||
DetailsPropertyGrid.SelectedObject = drawable;
|
||||
@ -597,10 +629,74 @@ namespace CodeWalker.Vehicles
|
||||
AddDrawableModelsTreeNodes(drawable.DrawableModelsLow, "Low Detail", false);
|
||||
AddDrawableModelsTreeNodes(drawable.DrawableModelsVeryLow, "Very Low Detail", false);
|
||||
//AddSelectionDrawableModelsTreeNodes(item.Drawable.DrawableModelsX, "X Detail", false);
|
||||
|
||||
|
||||
var fdrawable = drawable as FragDrawable;
|
||||
if (fdrawable != null)
|
||||
{
|
||||
var plod1 = fdrawable.OwnerFragment?.PhysicsLODGroup?.PhysicsLOD1;
|
||||
if ((plod1 != null) && (plod1.Children?.data_items != null))
|
||||
{
|
||||
foreach (var child in plod1.Children.data_items)
|
||||
{
|
||||
var cdrwbl = child.Drawable1;
|
||||
if ((cdrwbl != null) && (cdrwbl.AllModels?.Length > 0))
|
||||
{
|
||||
if (cdrwbl.Owner is FragDrawable) continue; //it's a copied drawable... eg a wheel
|
||||
|
||||
var dname = child.GroupNameHash.ToString();
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsHigh, dname + " - High Detail", true);
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsMedium, dname + " - Medium Detail", false);
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsLow, dname + " - Low Detail", false);
|
||||
AddDrawableModelsTreeNodes(cdrwbl.DrawableModelsVeryLow, dname + " - Very Low Detail", false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void LoadModel(YftFile yft)
|
||||
|
||||
|
||||
public void LoadVehicle()
|
||||
{
|
||||
var modelname = VehicleModelComboBox.Text;
|
||||
var modelnamel = modelname.ToLowerInvariant();
|
||||
MetaHash modelhash = JenkHash.GenHash(modelnamel);
|
||||
MetaHash modelhashhi = JenkHash.GenHash(modelnamel + "_hi");
|
||||
bool hidet = VehicleHighDetailCheckBox.Checked;
|
||||
var yfthash = hidet ? modelhashhi : modelhash;
|
||||
|
||||
VehicleInitData vid = null;
|
||||
if (GameFileCache.VehiclesInitDict.TryGetValue(modelhash, out vid))
|
||||
{
|
||||
bool vehiclechange = SelectedVehicleHash != modelhash;
|
||||
SelectedModelHash = yfthash;
|
||||
SelectedVehicleHash = modelhash;
|
||||
SelectedVehicleInit = vid;
|
||||
SelectedVehicleYft = GameFileCache.GetYft(SelectedModelHash);
|
||||
while (!SelectedVehicleYft.Loaded)
|
||||
{
|
||||
Thread.Sleep(20);//kinda hacky
|
||||
SelectedVehicleYft = GameFileCache.GetYft(SelectedModelHash);
|
||||
}
|
||||
LoadModel(SelectedVehicleYft, vehiclechange);
|
||||
VehicleMakeLabel.Text = GlobalText.TryGetString(JenkHash.GenHash(vid.vehicleMakeName.ToLower()));
|
||||
VehicleNameLabel.Text = GlobalText.TryGetString(JenkHash.GenHash(vid.gameName.ToLower()));
|
||||
}
|
||||
else
|
||||
{
|
||||
SelectedModelHash = 0;
|
||||
SelectedVehicleHash = 0;
|
||||
SelectedVehicleInit = null;
|
||||
SelectedVehicleYft = null;
|
||||
VehicleMakeLabel.Text = "-";
|
||||
VehicleNameLabel.Text = "-";
|
||||
}
|
||||
}
|
||||
|
||||
public void LoadModel(YftFile yft, bool movecamera = true)
|
||||
{
|
||||
if (yft == null) return;
|
||||
|
||||
@ -608,7 +704,7 @@ namespace CodeWalker.Vehicles
|
||||
//Yft = yft;
|
||||
|
||||
var dr = yft.Fragment?.Drawable;
|
||||
if (dr != null)
|
||||
if (movecamera && (dr != null))
|
||||
{
|
||||
MoveCameraToView(dr.BoundingCenter, dr.BoundingSphereRadius);
|
||||
}
|
||||
@ -792,6 +888,44 @@ namespace CodeWalker.Vehicles
|
||||
|
||||
|
||||
|
||||
private void RenderVehicle()
|
||||
{
|
||||
|
||||
YftFile yft = GameFileCache.GetYft(SelectedModelHash);
|
||||
if (yft != null)
|
||||
{
|
||||
if (yft.Loaded)
|
||||
{
|
||||
if (yft.Fragment != null)
|
||||
{
|
||||
var f = yft.Fragment;
|
||||
|
||||
var txdhash = SelectedVehicleHash;// yft.RpfFileEntry?.ShortNameHash ?? 0;
|
||||
|
||||
var namelower = yft.RpfFileEntry?.GetShortNameLower();
|
||||
if (namelower?.EndsWith("_hi") ?? false)
|
||||
{
|
||||
txdhash = JenkHash.GenHash(namelower.Substring(0, namelower.Length - 3));
|
||||
}
|
||||
|
||||
Archetype arch = null;// TryGetArchetype(hash);
|
||||
|
||||
Renderer.RenderFragment(arch, null, f, txdhash);
|
||||
|
||||
//seldrwbl = f.Drawable;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void VehicleForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
Init();
|
||||
@ -1275,5 +1409,21 @@ namespace CodeWalker.Vehicles
|
||||
// MessageBox.Show("Couldn't find embedded texture dict.");
|
||||
//}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void VehicleModelComboBox_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!GameFileCache.IsInited) return;
|
||||
|
||||
LoadVehicle();
|
||||
}
|
||||
|
||||
private void VehicleHighDetailCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (!GameFileCache.IsInited) return;
|
||||
|
||||
LoadVehicle();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user