diff --git a/autogen/convert_structs.py b/autogen/convert_structs.py index 55c8b07be..09fd99416 100644 --- a/autogen/convert_structs.py +++ b/autogen/convert_structs.py @@ -144,9 +144,13 @@ override_allowed_structs = { sLuaManuallyDefinedStructs = [{ 'path': 'n/a', 'structs': [ - 'struct Vec3f { float x; float y; float z; }', - 'struct Vec3s { s16 x; s16 y; s16 z; }', - 'struct Color { u8 r; u8 g; u8 b; }' + 'struct %s { %s }' % ( + type_name, + ' '.join([ + '%s %s;' % (vec_type['field_c_type'], lua_field) + for lua_field in vec_type['fields_mapping'].keys() + ]) + ) for type_name, vec_type in VEC_TYPES.items() ] }] @@ -254,7 +258,7 @@ def table_to_string(table): ############################################################################ -def parse_struct(struct_str): +def parse_struct(struct_str, sortFields = True): struct = {} identifier = struct_str.split(' ')[1] struct['identifier'] = identifier @@ -291,15 +295,16 @@ def parse_struct(struct_str): if identifier == 'Object': struct['fields'] += extract_object_fields() - struct['fields'] = sorted(struct['fields'], key=lambda d: d['identifier']) + if sortFields: + struct['fields'] = sorted(struct['fields'], key=lambda d: d['identifier']) return struct -def parse_structs(extracted): +def parse_structs(extracted, sortFields = True): structs = [] for e in extracted: for struct in e['structs']: - parsed = parse_struct(struct) + parsed = parse_struct(struct, sortFields) if e['path'] in override_allowed_structs: if parsed['identifier'] not in override_allowed_structs[e['path']]: continue @@ -647,7 +652,7 @@ def doc_struct(struct): return s def doc_structs(structs): - structs.extend(parse_structs(sLuaManuallyDefinedStructs)) + structs.extend(parse_structs(sLuaManuallyDefinedStructs, False)) # Don't sort fields for vec types in the documentation structs = sorted(structs, key=lambda d: d['identifier']) s = '## [:rewind: Lua Reference](lua.md)\n\n' diff --git a/autogen/lua_definitions/structs.lua b/autogen/lua_definitions/structs.lua index e6958ea75..6bab72680 100644 --- a/autogen/lua_definitions/structs.lua +++ b/autogen/lua_definitions/structs.lua @@ -2344,20 +2344,54 @@ --- @field public unk00 integer --- @field public unk02 integer +--- @class Vec2f +--- @field public x number +--- @field public y number + --- @class Vec3f --- @field public x number --- @field public y number --- @field public z number +--- @class Vec4f +--- @field public x number +--- @field public y number +--- @field public z number +--- @field public w number + --- @class Vec3s --- @field public x integer --- @field public y integer --- @field public z integer +--- @class Vec4s +--- @field public x integer +--- @field public y integer +--- @field public z integer +--- @field public w integer + +--- @class Mat4 +--- @field public m00 number +--- @field public m01 number +--- @field public m02 number +--- @field public m03 number +--- @field public m10 number +--- @field public m11 number +--- @field public m12 number +--- @field public m13 number +--- @field public m20 number +--- @field public m21 number +--- @field public m22 number +--- @field public m23 number +--- @field public m30 number +--- @field public m31 number +--- @field public m32 number +--- @field public m33 number + --- @class Color ---- @field public b integer ---- @field public g integer --- @field public r integer +--- @field public g integer +--- @field public b integer --- @class Pointer_integer --- @class Pointer_Trajectory diff --git a/docs/lua/structs.md b/docs/lua/structs.md index 5850c4788..d86c73768 100644 --- a/docs/lua/structs.md +++ b/docs/lua/structs.md @@ -70,6 +70,7 @@ - [MarioAnimation](#MarioAnimation) - [MarioBodyState](#MarioBodyState) - [MarioState](#MarioState) +- [Mat4](#Mat4) - [Mod](#Mod) - [ModAudio](#ModAudio) - [ModAudioSampleCopies](#ModAudioSampleCopies) @@ -103,8 +104,11 @@ - [TransitionInfo](#TransitionInfo) - [UnusedArea28](#UnusedArea28) - [VblankHandler](#VblankHandler) +- [Vec2f](#Vec2f) - [Vec3f](#Vec3f) - [Vec3s](#Vec3s) +- [Vec4f](#Vec4f) +- [Vec4s](#Vec4s) - [WallCollisionData](#WallCollisionData) - [WarpNode](#WarpNode) - [WarpTransition](#WarpTransition) @@ -759,9 +763,9 @@ | Field | Type | Access | | ----- | ---- | ------ | -| b | `integer` | | -| g | `integer` | | | r | `integer` | | +| g | `integer` | | +| b | `integer` | | [:arrow_up_small:](#) @@ -1793,6 +1797,31 @@
+## [Mat4](#Mat4) + +| Field | Type | Access | +| ----- | ---- | ------ | +| m00 | `number` | | +| m01 | `number` | | +| m02 | `number` | | +| m03 | `number` | | +| m10 | `number` | | +| m11 | `number` | | +| m12 | `number` | | +| m13 | `number` | | +| m20 | `number` | | +| m21 | `number` | | +| m22 | `number` | | +| m23 | `number` | | +| m30 | `number` | | +| m31 | `number` | | +| m32 | `number` | | +| m33 | `number` | | + +[:arrow_up_small:](#) + +
+ ## [Mod](#Mod) | Field | Type | Access | @@ -3088,6 +3117,17 @@
+## [Vec2f](#Vec2f) + +| Field | Type | Access | +| ----- | ---- | ------ | +| x | `number` | | +| y | `number` | | + +[:arrow_up_small:](#) + +
+ ## [Vec3f](#Vec3f) | Field | Type | Access | @@ -3112,6 +3152,32 @@
+## [Vec4f](#Vec4f) + +| Field | Type | Access | +| ----- | ---- | ------ | +| x | `number` | | +| y | `number` | | +| z | `number` | | +| w | `number` | | + +[:arrow_up_small:](#) + +
+ +## [Vec4s](#Vec4s) + +| Field | Type | Access | +| ----- | ---- | ------ | +| x | `integer` | | +| y | `integer` | | +| z | `integer` | | +| w | `integer` | | + +[:arrow_up_small:](#) + +
+ ## [WallCollisionData](#WallCollisionData) | Field | Type | Access |