diff --git a/BlenderSharp.sln.DotSettings.user b/BlenderSharp.sln.DotSettings.user
index 347eb6e..4f806d1 100644
--- a/BlenderSharp.sln.DotSettings.user
+++ b/BlenderSharp.sln.DotSettings.user
@@ -5,6 +5,7 @@
ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
ForceIncluded
ForceIncluded
ForceIncluded
@@ -22,6 +23,8 @@
ForceIncluded
ForceIncluded
ForceIncluded
+ ForceIncluded
+ ForceIncluded
ForceIncluded
True
26214400
diff --git a/CodeGenerator/Program.cs b/CodeGenerator/Program.cs
index c9938fd..e7b94b5 100644
--- a/CodeGenerator/Program.cs
+++ b/CodeGenerator/Program.cs
@@ -241,7 +241,7 @@ namespace CodeGenerator {
else //Store the data for when the list attribute is made
listCountOffsets.Add(fName, totalSize);
- totalSize += field.Type.ParseFSize();
+ totalSize += field.Type.ParseFSize()!.Value;
} else {
Log($"Field {field.Name} is of unknown or unsupported type");
}
@@ -367,6 +367,7 @@ namespace CodeGenerator {
.AddAutoProperty(typeof(string), "OriginalName")
.AddAutoProperty(typeof(string), "UnderlyingType")
.AddAutoProperty(typeof(int), "ArrayLenght")
+ .AddAutoProperty(typeof(bool), "IsPointer")
.AddAutoProperty(typeof(int), "MemoryOffset")
.AddPropertiesConstructor()
.AddBaseConstructorParams(["OriginalIndex", "OriginalName"])
@@ -427,10 +428,16 @@ namespace CodeGenerator {
private static CodeAttributeDeclaration GenerateDnaArrayAttribute(int index, DnaField field, Dna1Body body, int offset,
out int size) {
+ var isPointer = false;
//Grab the lenght of the single item in the array
size = body.Lengths[field.IdxType];
//Generate the array declaration again... to grab the base type
CodeMemberField amf = CreateArrayMemberField(field);
+
+ if (field.Name.StartsWith('*')) {
+ size = 8;
+ isPointer = true;
+ }
//Generate the type string
var sb = new StringBuilder();
@@ -445,7 +452,7 @@ namespace CodeGenerator {
var dimensions = field.Name.GetArrayDimensions();
int length = 1;
foreach (int dim in dimensions) {
- length += dim;
+ length *= dim;
size *= dim;
}
@@ -457,6 +464,7 @@ namespace CodeGenerator {
new(new CodePrimitiveExpression(field.Name)),
new(new CodePrimitiveExpression(t)),
new(new CodePrimitiveExpression(length)),
+ new(new CodePrimitiveExpression(isPointer)),
new(new CodePrimitiveExpression(offset))
});
return cad;