mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
Expose useful global graphnodes (#789)
* Add global node getters * move pointer asterisk thing for consistency * Run autogen * Add geo prefix to new functions * Run regen * Rename functions * run autogen * Make viewport fields mutable * Address code review comments
This commit is contained in:
parent
19880356eb
commit
7472aa9b0a
12 changed files with 303 additions and 3 deletions
|
|
@ -21,7 +21,6 @@ type_mappings = {
|
|||
exclude_structs = [
|
||||
'SPTask',
|
||||
'VblankHandler',
|
||||
'GraphNodeRoot',
|
||||
'MarioAnimDmaRelatedThing',
|
||||
'UnusedArea28',
|
||||
]
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ struct LuaObjectField* smlua_get_object_field_autogen(u16 lot, const char* key);
|
|||
"""
|
||||
|
||||
override_field_names = {
|
||||
"Area": {"unk04": "root"}
|
||||
}
|
||||
|
||||
override_field_types = {
|
||||
|
|
@ -95,6 +96,7 @@ override_field_invisible = {
|
|||
"MarioState": [ "visibleToEnemies" ],
|
||||
"NetworkPlayer": [ "gag", "moderator", "discordId" ],
|
||||
"GraphNode": [ "_guard1", "_guard2" ],
|
||||
"GraphNodeRoot": ["unk15", "views"],
|
||||
"FnGraphNode": [ "luaTokenIndex" ],
|
||||
"Object": [ "firstSurface" ],
|
||||
"ModAudio": [ "sound", "decoder", "buffer", "bufferSize", "sampleCopiesTail" ],
|
||||
|
|
@ -129,6 +131,7 @@ override_field_immutable = {
|
|||
"GraphNodeObjectParent": [ "sharedChild" ],
|
||||
"GraphNodePerspective": [ "unused" ],
|
||||
"GraphNodeSwitchCase": [ "fnNode", "unused" ],
|
||||
"GraphNodeRoot": ["node", "areaIndex", "numViews"],
|
||||
"ObjectWarpNode": [ "next "],
|
||||
"Animation": [ "length" ],
|
||||
"AnimationTable": [ "count" ],
|
||||
|
|
|
|||
|
|
@ -10584,6 +10584,36 @@ function get_os_name()
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @return GraphNodeRoot
|
||||
--- Gets the current GraphNodeRoot
|
||||
function geo_get_current_root()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return GraphNodeMasterList
|
||||
--- Gets the current GraphNodeMasterList
|
||||
function geo_get_current_master_list()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return GraphNodePerspective
|
||||
--- Gets the current GraphNodePerspective
|
||||
function geo_get_current_perspective()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return GraphNodeCamera
|
||||
--- Gets the current GraphNodeCamera
|
||||
function geo_get_current_camera()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return GraphNodeHeldObject
|
||||
--- Gets the current GraphNodeHeldObject
|
||||
function geo_get_current_held_object()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param name string
|
||||
--- @return ModelExtendedId
|
||||
--- Gets the extended model ID for the `name` of a `GeoLayout`
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@
|
|||
--- @field public surfaceRooms Pointer_integer
|
||||
--- @field public terrainData Pointer_integer
|
||||
--- @field public terrainType integer
|
||||
--- @field public root GraphNodeRoot
|
||||
--- @field public warpNodes ObjectWarpNode
|
||||
--- @field public whirlpools Whirlpool[]
|
||||
|
||||
|
|
@ -950,6 +951,15 @@
|
|||
--- @field public prevTimestamp number
|
||||
--- @field public unused integer
|
||||
|
||||
--- @class GraphNodeRoot
|
||||
--- @field public areaIndex integer
|
||||
--- @field public height integer
|
||||
--- @field public node GraphNode
|
||||
--- @field public numViews integer
|
||||
--- @field public width integer
|
||||
--- @field public x integer
|
||||
--- @field public y integer
|
||||
|
||||
--- @class GraphNodeRotation
|
||||
--- @field public displayList Pointer_Gfx
|
||||
--- @field public node GraphNode
|
||||
|
|
|
|||
|
|
@ -4451,6 +4451,111 @@ Gets the name of the operating system the game is running on
|
|||
|
||||
<br />
|
||||
|
||||
## [geo_get_current_root](#geo_get_current_root)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodeRoot
|
||||
|
||||
### Lua Example
|
||||
`local GraphNodeRootValue = geo_get_current_root()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
[GraphNodeRoot](structs.md#GraphNodeRoot)
|
||||
|
||||
### C Prototype
|
||||
`struct GraphNodeRoot* geo_get_current_root(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [geo_get_current_master_list](#geo_get_current_master_list)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodeMasterList
|
||||
|
||||
### Lua Example
|
||||
`local GraphNodeMasterListValue = geo_get_current_master_list()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
[GraphNodeMasterList](structs.md#GraphNodeMasterList)
|
||||
|
||||
### C Prototype
|
||||
`struct GraphNodeMasterList* geo_get_current_master_list(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [geo_get_current_perspective](#geo_get_current_perspective)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodePerspective
|
||||
|
||||
### Lua Example
|
||||
`local GraphNodePerspectiveValue = geo_get_current_perspective()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
[GraphNodePerspective](structs.md#GraphNodePerspective)
|
||||
|
||||
### C Prototype
|
||||
`struct GraphNodePerspective* geo_get_current_perspective(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [geo_get_current_camera](#geo_get_current_camera)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodeCamera
|
||||
|
||||
### Lua Example
|
||||
`local GraphNodeCameraValue = geo_get_current_camera()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
[GraphNodeCamera](structs.md#GraphNodeCamera)
|
||||
|
||||
### C Prototype
|
||||
`struct GraphNodeCamera* geo_get_current_camera(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [geo_get_current_held_object](#geo_get_current_held_object)
|
||||
|
||||
### Description
|
||||
Gets the current GraphNodeHeldObject
|
||||
|
||||
### Lua Example
|
||||
`local GraphNodeHeldObjectValue = geo_get_current_held_object()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
[GraphNodeHeldObject](structs.md#GraphNodeHeldObject)
|
||||
|
||||
### C Prototype
|
||||
`struct GraphNodeHeldObject* geo_get_current_held_object(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
---
|
||||
# functions from smlua_model_utils.h
|
||||
|
||||
|
|
|
|||
|
|
@ -1916,6 +1916,11 @@
|
|||
- [set_window_title](functions-6.md#set_window_title)
|
||||
- [reset_window_title](functions-6.md#reset_window_title)
|
||||
- [get_os_name](functions-6.md#get_os_name)
|
||||
- [geo_get_current_root](functions-6.md#geo_get_current_root)
|
||||
- [geo_get_current_master_list](functions-6.md#geo_get_current_master_list)
|
||||
- [geo_get_current_perspective](functions-6.md#geo_get_current_perspective)
|
||||
- [geo_get_current_camera](functions-6.md#geo_get_current_camera)
|
||||
- [geo_get_current_held_object](functions-6.md#geo_get_current_held_object)
|
||||
|
||||
<br />
|
||||
|
||||
|
|
|
|||
|
|
@ -194,6 +194,7 @@
|
|||
| surfaceRooms | `Pointer` <`integer`> | read-only |
|
||||
| terrainData | `Pointer` <`integer`> | read-only |
|
||||
| terrainType | `integer` | |
|
||||
| root | [GraphNodeRoot](structs.md#GraphNodeRoot) | |
|
||||
| warpNodes | [ObjectWarpNode](structs.md#ObjectWarpNode) | read-only |
|
||||
| whirlpools | `Array` <`Whirlpool`> | |
|
||||
|
||||
|
|
@ -1434,6 +1435,22 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [GraphNodeRoot](#GraphNodeRoot)
|
||||
|
||||
| Field | Type | Access |
|
||||
| ----- | ---- | ------ |
|
||||
| areaIndex | `integer` | read-only |
|
||||
| height | `integer` | |
|
||||
| node | [GraphNode](structs.md#GraphNode) | read-only |
|
||||
| numViews | `integer` | read-only |
|
||||
| width | `integer` | |
|
||||
| x | `integer` | |
|
||||
| y | `integer` | |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [GraphNodeRotation](#GraphNodeRotation)
|
||||
|
||||
| Field | Type | Access |
|
||||
|
|
|
|||
|
|
@ -166,7 +166,7 @@ static struct LuaObjectField sAnimationTableFields[LUA_ANIMATION_TABLE_FIELD_COU
|
|||
{ "count", LVT_U32, offsetof(struct AnimationTable, count), true, LOT_NONE, 1, sizeof(u32) },
|
||||
};
|
||||
|
||||
#define LUA_AREA_FIELD_COUNT 20
|
||||
#define LUA_AREA_FIELD_COUNT 21
|
||||
static struct LuaObjectField sAreaFields[LUA_AREA_FIELD_COUNT] = {
|
||||
{ "camera", LVT_COBJECT_P, offsetof(struct Area, camera), false, LOT_CAMERA, 1, sizeof(struct Camera*) },
|
||||
{ "dialog", LVT_U8, offsetof(struct Area, dialog), false, LOT_NONE, 2, sizeof(u8) },
|
||||
|
|
@ -186,7 +186,7 @@ static struct LuaObjectField sAreaFields[LUA_AREA_FIELD_COUNT] = {
|
|||
{ "surfaceRooms", LVT_S8_P, offsetof(struct Area, surfaceRooms), true, LOT_POINTER, 1, sizeof(s8*) },
|
||||
{ "terrainData", LVT_S16_P, offsetof(struct Area, terrainData), true, LOT_POINTER, 1, sizeof(s16*) },
|
||||
{ "terrainType", LVT_U16, offsetof(struct Area, terrainType), false, LOT_NONE, 1, sizeof(u16) },
|
||||
// { "unk04", LVT_COBJECT_P, offsetof(struct Area, unk04), true, LOT_???, 1, sizeof(struct GraphNodeRoot*) }, <--- UNIMPLEMENTED
|
||||
{ "root", LVT_COBJECT_P, offsetof(struct Area, unk04), false, LOT_GRAPHNODEROOT, 1, sizeof(struct GraphNodeRoot*) },
|
||||
// { "unused28", LVT_COBJECT_P, offsetof(struct Area, unused28), false, LOT_???, 1, sizeof(struct UnusedArea28*) }, <--- UNIMPLEMENTED
|
||||
{ "warpNodes", LVT_COBJECT_P, offsetof(struct Area, warpNodes), true, LOT_OBJECTWARPNODE, 1, sizeof(struct ObjectWarpNode*) },
|
||||
{ "whirlpools", LVT_COBJECT_P, offsetof(struct Area, whirlpools), false, LOT_WHIRLPOOL, 2, sizeof(struct Whirlpool*) },
|
||||
|
|
@ -1196,6 +1196,17 @@ static struct LuaObjectField sGraphNodePerspectiveFields[LUA_GRAPH_NODE_PERSPECT
|
|||
{ "unused", LVT_S32, offsetof(struct GraphNodePerspective, unused), true, LOT_NONE, 1, sizeof(s32) },
|
||||
};
|
||||
|
||||
#define LUA_GRAPH_NODE_ROOT_FIELD_COUNT 7
|
||||
static struct LuaObjectField sGraphNodeRootFields[LUA_GRAPH_NODE_ROOT_FIELD_COUNT] = {
|
||||
{ "areaIndex", LVT_U8, offsetof(struct GraphNodeRoot, areaIndex), true, LOT_NONE, 1, sizeof(u8) },
|
||||
{ "height", LVT_S16, offsetof(struct GraphNodeRoot, height), false, LOT_NONE, 1, sizeof(s16) },
|
||||
{ "node", LVT_COBJECT, offsetof(struct GraphNodeRoot, node), true, LOT_GRAPHNODE, 1, sizeof(struct GraphNode) },
|
||||
{ "numViews", LVT_S16, offsetof(struct GraphNodeRoot, numViews), true, LOT_NONE, 1, sizeof(s16) },
|
||||
{ "width", LVT_S16, offsetof(struct GraphNodeRoot, width), false, LOT_NONE, 1, sizeof(s16) },
|
||||
{ "x", LVT_S16, offsetof(struct GraphNodeRoot, x), false, LOT_NONE, 1, sizeof(s16) },
|
||||
{ "y", LVT_S16, offsetof(struct GraphNodeRoot, y), false, LOT_NONE, 1, sizeof(s16) },
|
||||
};
|
||||
|
||||
#define LUA_GRAPH_NODE_ROTATION_FIELD_COUNT 5
|
||||
static struct LuaObjectField sGraphNodeRotationFields[LUA_GRAPH_NODE_ROTATION_FIELD_COUNT] = {
|
||||
{ "displayList", LVT_COBJECT_P, offsetof(struct GraphNodeRotation, displayList), false, LOT_GFX, 1, sizeof(Gfx*) },
|
||||
|
|
@ -2844,6 +2855,7 @@ struct LuaObjectTable sLuaObjectAutogenTable[LOT_AUTOGEN_MAX - LOT_AUTOGEN_MIN]
|
|||
{ LOT_GRAPHNODEOBJECTPARENT, sGraphNodeObjectParentFields, LUA_GRAPH_NODE_OBJECT_PARENT_FIELD_COUNT },
|
||||
{ LOT_GRAPHNODEORTHOPROJECTION, sGraphNodeOrthoProjectionFields, LUA_GRAPH_NODE_ORTHO_PROJECTION_FIELD_COUNT },
|
||||
{ LOT_GRAPHNODEPERSPECTIVE, sGraphNodePerspectiveFields, LUA_GRAPH_NODE_PERSPECTIVE_FIELD_COUNT },
|
||||
{ LOT_GRAPHNODEROOT, sGraphNodeRootFields, LUA_GRAPH_NODE_ROOT_FIELD_COUNT },
|
||||
{ LOT_GRAPHNODEROTATION, sGraphNodeRotationFields, LUA_GRAPH_NODE_ROTATION_FIELD_COUNT },
|
||||
{ LOT_GRAPHNODESCALE, sGraphNodeScaleFields, LUA_GRAPH_NODE_SCALE_FIELD_COUNT },
|
||||
{ LOT_GRAPHNODESHADOW, sGraphNodeShadowFields, LUA_GRAPH_NODE_SHADOW_FIELD_COUNT },
|
||||
|
|
@ -2964,6 +2976,7 @@ const char *sLuaLotNames[] = {
|
|||
[LOT_GRAPHNODEOBJECTPARENT] = "GraphNodeObjectParent",
|
||||
[LOT_GRAPHNODEORTHOPROJECTION] = "GraphNodeOrthoProjection",
|
||||
[LOT_GRAPHNODEPERSPECTIVE] = "GraphNodePerspective",
|
||||
[LOT_GRAPHNODEROOT] = "GraphNodeRoot",
|
||||
[LOT_GRAPHNODEROTATION] = "GraphNodeRotation",
|
||||
[LOT_GRAPHNODESCALE] = "GraphNodeScale",
|
||||
[LOT_GRAPHNODESHADOW] = "GraphNodeShadow",
|
||||
|
|
|
|||
|
|
@ -69,6 +69,7 @@ enum LuaObjectAutogenType {
|
|||
LOT_GRAPHNODEOBJECTPARENT,
|
||||
LOT_GRAPHNODEORTHOPROJECTION,
|
||||
LOT_GRAPHNODEPERSPECTIVE,
|
||||
LOT_GRAPHNODEROOT,
|
||||
LOT_GRAPHNODEROTATION,
|
||||
LOT_GRAPHNODESCALE,
|
||||
LOT_GRAPHNODESHADOW,
|
||||
|
|
|
|||
|
|
@ -31716,6 +31716,81 @@ int smlua_func_get_os_name(UNUSED lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_geo_get_current_root(UNUSED lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 0) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "geo_get_current_root", 0, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
smlua_push_object(L, LOT_GRAPHNODEROOT, geo_get_current_root(), NULL);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_geo_get_current_master_list(UNUSED lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 0) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "geo_get_current_master_list", 0, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
smlua_push_object(L, LOT_GRAPHNODEMASTERLIST, geo_get_current_master_list(), NULL);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_geo_get_current_perspective(UNUSED lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 0) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "geo_get_current_perspective", 0, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
smlua_push_object(L, LOT_GRAPHNODEPERSPECTIVE, geo_get_current_perspective(), NULL);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_geo_get_current_camera(UNUSED lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 0) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "geo_get_current_camera", 0, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
smlua_push_object(L, LOT_GRAPHNODECAMERA, geo_get_current_camera(), NULL);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_geo_get_current_held_object(UNUSED lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 0) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "geo_get_current_held_object", 0, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
smlua_push_object(L, LOT_GRAPHNODEHELDOBJECT, geo_get_current_held_object(), NULL);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/////////////////////////
|
||||
// smlua_model_utils.h //
|
||||
/////////////////////////
|
||||
|
|
@ -35455,6 +35530,11 @@ void smlua_bind_functions_autogen(void) {
|
|||
smlua_bind_function(L, "set_window_title", smlua_func_set_window_title);
|
||||
smlua_bind_function(L, "reset_window_title", smlua_func_reset_window_title);
|
||||
smlua_bind_function(L, "get_os_name", smlua_func_get_os_name);
|
||||
smlua_bind_function(L, "geo_get_current_root", smlua_func_geo_get_current_root);
|
||||
smlua_bind_function(L, "geo_get_current_master_list", smlua_func_geo_get_current_master_list);
|
||||
smlua_bind_function(L, "geo_get_current_perspective", smlua_func_geo_get_current_perspective);
|
||||
smlua_bind_function(L, "geo_get_current_camera", smlua_func_geo_get_current_camera);
|
||||
smlua_bind_function(L, "geo_get_current_held_object", smlua_func_geo_get_current_held_object);
|
||||
|
||||
// smlua_model_utils.h
|
||||
smlua_bind_function(L, "smlua_model_util_get_id", smlua_func_smlua_model_util_get_id);
|
||||
|
|
|
|||
|
|
@ -545,3 +545,25 @@ const char* get_os_name(void) {
|
|||
return "Unknown";
|
||||
#endif
|
||||
}
|
||||
|
||||
///
|
||||
|
||||
struct GraphNodeRoot* geo_get_current_root(void) {
|
||||
return gCurGraphNodeRoot;
|
||||
}
|
||||
|
||||
struct GraphNodeMasterList* geo_get_current_master_list(void) {
|
||||
return gCurGraphNodeMasterList;
|
||||
}
|
||||
|
||||
struct GraphNodePerspective* geo_get_current_perspective(void) {
|
||||
return gCurGraphNodeCamFrustum;
|
||||
}
|
||||
|
||||
struct GraphNodeCamera* geo_get_current_camera(void) {
|
||||
return gCurGraphNodeCamera;
|
||||
}
|
||||
|
||||
struct GraphNodeHeldObject* geo_get_current_held_object(void) {
|
||||
return gCurGraphNodeHeldObject;
|
||||
}
|
||||
|
|
@ -207,4 +207,19 @@ void reset_window_title(void);
|
|||
/* |description|Gets the name of the operating system the game is running on|descriptionEnd| */
|
||||
const char* get_os_name(void);
|
||||
|
||||
/* |description|Gets the current GraphNodeRoot|descriptionEnd|*/
|
||||
struct GraphNodeRoot* geo_get_current_root(void);
|
||||
|
||||
/* |description|Gets the current GraphNodeMasterList|descriptionEnd|*/
|
||||
struct GraphNodeMasterList* geo_get_current_master_list(void);
|
||||
|
||||
/* |description|Gets the current GraphNodePerspective|descriptionEnd|*/
|
||||
struct GraphNodePerspective* geo_get_current_perspective(void);
|
||||
|
||||
/* |description|Gets the current GraphNodeCamera|descriptionEnd|*/
|
||||
struct GraphNodeCamera* geo_get_current_camera(void);
|
||||
|
||||
/* |description|Gets the current GraphNodeHeldObject|descriptionEnd|*/
|
||||
struct GraphNodeHeldObject* geo_get_current_held_object(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue