Jankily read scale in for models
This commit is contained in:
parent
f69a98e880
commit
3b9ff6c852
|
@ -105,12 +105,14 @@ public partial class Mission : Node3D
|
|||
if (
|
||||
_file.Chunks.TryGetValue("BRLIST", out var brListRaw) &&
|
||||
_file.Chunks.TryGetValue("P$ModelName", out var modelNamesRaw) &&
|
||||
_file.Chunks.TryGetValue("P$Scale", out var scalesRaw) &&
|
||||
_file.Chunks.TryGetValue("L$MetaProp", out var metaPropLinksRaw) &&
|
||||
_file.Chunks.TryGetValue("LD$MetaProp", out var metaPropLinkDataRaw)
|
||||
)
|
||||
{
|
||||
var brList = (BrList)brListRaw;
|
||||
var modelNames = (PropertyModelName)modelNamesRaw;
|
||||
var scales = (PropertyScale)scalesRaw;
|
||||
var metaPropLinks = (LinkChunk)metaPropLinksRaw;
|
||||
var metaPropLinkData = (LinkDataMetaProp)metaPropLinkDataRaw;
|
||||
|
||||
|
@ -130,18 +132,20 @@ public partial class Mission : Node3D
|
|||
var gamFile = new DbFile(paths[0]);
|
||||
if (gamFile.Chunks.TryGetValue("P$ModelName", out var gamChunk1) &&
|
||||
gamFile.Chunks.TryGetValue("L$MetaProp", out var gamChunk2) &&
|
||||
gamFile.Chunks.TryGetValue("LD$MetaProp", out var gamChunk3))
|
||||
gamFile.Chunks.TryGetValue("LD$MetaProp", out var gamChunk3) &&
|
||||
gamFile.Chunks.TryGetValue("P$Scale", out var gamChunk4))
|
||||
{
|
||||
GD.Print($"Pre-Merged chunks: {modelNames.properties.Count} {metaPropLinks.links.Count} {metaPropLinkData.linkData.Count}");
|
||||
modelNames.properties.AddRange(((PropertyModelName)gamChunk1).properties);
|
||||
metaPropLinks.links.AddRange(((LinkChunk)gamChunk2).links);
|
||||
metaPropLinkData.linkData.AddRange(((LinkDataMetaProp)gamChunk3).linkData);
|
||||
scales.properties.AddRange(((PropertyScale)gamChunk4).properties);
|
||||
GD.Print($"Post-Merged chunks: {modelNames.properties.Count} {metaPropLinks.links.Count} {metaPropLinkData.linkData.Count}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PlaceObjects(brList, modelNames, metaPropLinks, metaPropLinkData);
|
||||
PlaceObjects(brList, modelNames, scales, metaPropLinks, metaPropLinkData);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -160,6 +164,7 @@ public partial class Mission : Node3D
|
|||
private void PlaceObjects(
|
||||
BrList brList,
|
||||
PropertyModelName modelNames,
|
||||
PropertyScale scales,
|
||||
LinkChunk metapropLink,
|
||||
LinkDataMetaProp metaPropLinkData)
|
||||
{
|
||||
|
@ -175,9 +180,13 @@ public partial class Mission : Node3D
|
|||
// Determine if we have a model name :))
|
||||
var id = (int)brush.brushInfo;
|
||||
var modelName = "";
|
||||
var scale = Vector3.One;
|
||||
var scaleFound = false;
|
||||
while (true)
|
||||
{
|
||||
// See if there's a modelname property
|
||||
if (modelName == "")
|
||||
{
|
||||
foreach (var prop in modelNames.properties)
|
||||
{
|
||||
if (prop.objectId == id)
|
||||
|
@ -186,9 +195,27 @@ public partial class Mission : Node3D
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (modelName != "") break;
|
||||
}
|
||||
|
||||
// No modelname so check for a parent
|
||||
if (!scaleFound)
|
||||
{
|
||||
foreach (var prop in scales.properties)
|
||||
{
|
||||
if (prop.objectId == id)
|
||||
{
|
||||
scale = prop.scale.ToGodotVec3(false);
|
||||
scaleFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (modelName != "" && scaleFound)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Check for a parent
|
||||
var length = metapropLink.links.Count;
|
||||
var prevId = id;
|
||||
for (var i = 0; i < length; i++)
|
||||
|
@ -223,7 +250,8 @@ public partial class Mission : Node3D
|
|||
var model = new Model
|
||||
{
|
||||
Position = pos,
|
||||
RotationDegrees = rot
|
||||
RotationDegrees = rot,
|
||||
Scale = scale,
|
||||
};
|
||||
if (objPath != null)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue