sm64coopdx/src/pc/lua/smlua_cobject.h
Prince Frizzy 523e7842d9
A bunch of LUA autogen additions. (#235)
* A bunch of LUA autogen additions.
- Add support for Vec4f, Vec4s and Mat4 in the autogen.
- Improve error messages for improper argument counts
- Added support for more pointer types in the autogen.

* Fix offsets in sMat4Fields.

* autogen: Rework this at the request of DJ.
2022-11-30 00:37:12 -08:00

77 lines
No EOL
1.5 KiB
C

#ifndef SMLUA_COBJECT_H
#define SMLUA_COBJECT_H
enum LuaValueType {
LVT_BOOL,
LVT_BOOL_P,
LVT_U8,
LVT_U8_P,
LVT_U16,
LVT_U16_P,
LVT_U32,
LVT_U32_P,
LVT_S8,
LVT_S8_P,
LVT_S16,
LVT_S16_P,
LVT_S32,
LVT_S32_P,
LVT_F32,
LVT_F32_P,
LVT_U64,
LVT_U64_P,
LVT_COBJECT,
LVT_COBJECT_P,
LVT_STRING,
LVT_STRING_P,
LVT_BEHAVIORSCRIPT,
LVT_BEHAVIORSCRIPT_P,
LVT_OBJECTANIMPOINTER,
LVT_OBJECTANIMPOINTER_P,
LVT_COLLISION,
LVT_COLLISION_P,
LVT_LEVELSCRIPT,
LVT_LEVELSCRIPT_P,
LVT_TRAJECTORY,
LVT_TRAJECTORY_P,
LVT_LUAFUNCTION,
LVT_POINTER,
LVT_MAX,
};
enum LuaObjectType {
LOT_NONE = 0,
LOT_VEC3S,
LOT_VEC3F,
LOT_VEC4S,
LOT_VEC4F,
LOT_MAT4,
LOT_COLOR,
LOT_POINTER,
LOT_MAX,
};
struct LuaObjectField {
const char* key;
enum LuaValueType valueType;
size_t valueOffset;
bool immutable;
u16 lot;
};
struct LuaObjectTable {
u16 lot;
struct LuaObjectField* fields;
u16 fieldCount;
};
bool smlua_valid_lot(u16 lot);
bool smlua_valid_lvt(u16 lvt);
struct LuaObjectField* smlua_get_object_field_from_ot(struct LuaObjectTable* ot, const char* key);
struct LuaObjectField* smlua_get_object_field(u16 lot, const char* key);
struct LuaObjectField* smlua_get_custom_field(lua_State* L, u32 lot, int keyIndex);
void smlua_cobject_init_globals(void);
void smlua_cobject_init_per_file_globals(char* path);
void smlua_bind_cobject(void);
#endif