Autogenerated Lua documentation
This commit is contained in:
parent
3d5d0b5306
commit
c170984471
|
@ -0,0 +1,5 @@
|
|||
#!/usr/bin/bash
|
||||
|
||||
python3 ./autogen/convert_structs.py
|
||||
python3 ./autogen/convert_functions.py
|
||||
python3 ./autogen/convert_constants.py
|
|
@ -63,3 +63,24 @@ def gen_comment_header(f):
|
|||
s += "" + comment_l + "\n"
|
||||
s += "\n"
|
||||
return s
|
||||
|
||||
def translate_type_to_lua(ptype):
|
||||
if ptype.startswith('struct '):
|
||||
return ptype.split(' ')[1].replace('*', ''), True
|
||||
|
||||
if 'Vec3' in ptype:
|
||||
return ptype, True
|
||||
|
||||
if ptype.startswith('enum '):
|
||||
return 'integer', False
|
||||
|
||||
if ptype in usf_types:
|
||||
if ptype.startswith('f'):
|
||||
return 'number', False
|
||||
else:
|
||||
return 'integer', False
|
||||
|
||||
if 'void' == ptype:
|
||||
return None, False
|
||||
|
||||
return ptype, False
|
||||
|
|
|
@ -1,18 +1,118 @@
|
|||
import os
|
||||
from common import *
|
||||
|
||||
in_filename = os.path.dirname(os.path.realpath(__file__)) + "/lua_constants/constants.lua"
|
||||
out_filename = os.path.dirname(os.path.realpath(__file__)) + '/../src/pc/lua/smlua_constants_autogen.c'
|
||||
docs_lua_constants = 'docs/lua/constants.md'
|
||||
|
||||
############################################################################
|
||||
|
||||
def build_constants():
|
||||
built = "char gSmluaConstants[] = "
|
||||
with open(in_filename) as fp:
|
||||
lines = fp.readlines()
|
||||
for line in lines:
|
||||
if line.startswith('--'):
|
||||
continue
|
||||
if line.strip() == '':
|
||||
continue
|
||||
built += '"' + line.replace('\n', '').replace('\r', '') + '\\n"' + "\n"
|
||||
built += ';'
|
||||
|
||||
with open(out_filename, 'w') as out:
|
||||
out.write(built)
|
||||
|
||||
############################################################################
|
||||
|
||||
def doc_process(lines):
|
||||
processed = []
|
||||
cur = None
|
||||
|
||||
built = "char gSmluaConstants[] = "
|
||||
with open(in_filename) as fp:
|
||||
lines = fp.readlines()
|
||||
for line in lines:
|
||||
if line.startswith('--'):
|
||||
continue
|
||||
if line.strip() == '':
|
||||
continue
|
||||
built += '"' + line.replace('\n', '').replace('\r', '') + '\\n"' + "\n"
|
||||
built += ';'
|
||||
|
||||
with open(out_filename, 'w') as out:
|
||||
out.write(built)
|
||||
if line.startswith('--'):
|
||||
spl = line.split()
|
||||
if len(spl) == 3 and spl[0] == spl[2]:
|
||||
if cur != None:
|
||||
processed.append(cur)
|
||||
cur = {}
|
||||
cur['category'] = spl[1].strip()
|
||||
cur['constants'] = []
|
||||
continue
|
||||
|
||||
if len(line.strip()) == 0:
|
||||
if len(cur['constants']) == 0:
|
||||
continue
|
||||
|
||||
if len(cur['constants'][-1]) == 0:
|
||||
continue
|
||||
|
||||
cur['constants'].append('')
|
||||
continue
|
||||
|
||||
if '=' not in line:
|
||||
continue
|
||||
|
||||
if line[0] < 'A' or line[0] > 'Z':
|
||||
continue
|
||||
|
||||
cur['constants'].append(line.strip().split(' ')[0])
|
||||
|
||||
if cur != None:
|
||||
processed.append(cur)
|
||||
|
||||
processed = sorted(processed, key=lambda d: d['category'])
|
||||
return processed
|
||||
|
||||
def doc_build_category(p):
|
||||
category = p['category']
|
||||
constants = p['constants']
|
||||
if len(constants[-1]) == 0:
|
||||
constants = constants[:-1]
|
||||
|
||||
if len(constants) == 0:
|
||||
return
|
||||
|
||||
s = '\n## [%s](%s)\n' % (category, category)
|
||||
|
||||
for c in constants:
|
||||
if len(c) == 0:
|
||||
s += '\n<br />\n\n'
|
||||
continue
|
||||
|
||||
s += '- %s\n' % c
|
||||
|
||||
s += '\n[:arrow_up_small:](#)\n\n<br />\n'
|
||||
|
||||
return s
|
||||
|
||||
def doc_build_index(processed):
|
||||
s = '# Supported Constants\n'
|
||||
for p in processed:
|
||||
s += '- [%s](#%s)\n' % (p['category'], p['category'])
|
||||
|
||||
s += '\n<br />\n'
|
||||
|
||||
return s
|
||||
|
||||
def doc_build(processed):
|
||||
s = '## [:rewind: Lua Reference](lua.md)\n\n'
|
||||
s += doc_build_index(processed)
|
||||
for p in processed:
|
||||
s += doc_build_category(p)
|
||||
|
||||
with open(get_path(docs_lua_constants), 'w') as out:
|
||||
out.write(s)
|
||||
|
||||
def doc_constants():
|
||||
with open(in_filename) as fp:
|
||||
lines = fp.readlines()
|
||||
|
||||
processed = doc_process(lines)
|
||||
doc_build(processed)
|
||||
|
||||
|
||||
############################################################################
|
||||
|
||||
build_constants()
|
||||
doc_constants()
|
|
@ -7,6 +7,7 @@ integer_types = ["u8", "u16", "u32", "u64", "s8", "s16", "s32", "s64", "int"]
|
|||
number_types = ["f32", "float"]
|
||||
param_override_build = {}
|
||||
out_filename = 'src/pc/lua/smlua_functions_autogen.c'
|
||||
docs_lua_functions = 'docs/lua/functions.md'
|
||||
|
||||
###########################################################
|
||||
|
||||
|
@ -75,18 +76,10 @@ param_override_build['Vec3s'] = {
|
|||
'after': param_vec3s_after_call
|
||||
}
|
||||
|
||||
###########################################################
|
||||
############################################################################
|
||||
|
||||
built_functions = ""
|
||||
built_binds = ""
|
||||
|
||||
#######
|
||||
|
||||
do_extern = False
|
||||
header_h = ""
|
||||
|
||||
functions = []
|
||||
|
||||
def reject_line(line):
|
||||
if len(line) == 0:
|
||||
return True
|
||||
|
@ -104,46 +97,7 @@ def normalize_type(t):
|
|||
t = parts[0] + ' ' + parts[1].replace(' ', '')
|
||||
return t
|
||||
|
||||
def process_line(line):
|
||||
function = {}
|
||||
|
||||
line = line.strip()
|
||||
function['line'] = line
|
||||
|
||||
line = line.replace('UNUSED', '')
|
||||
|
||||
match = re.search('[a-zA-Z0-9_]+\(', line)
|
||||
function['type'] = normalize_type(line[0:match.span()[0]])
|
||||
function['identifier'] = match.group()[0:-1]
|
||||
|
||||
function['params'] = []
|
||||
params_str = line.split('(', 1)[1].rsplit(')', 1)[0].strip()
|
||||
if len(params_str) == 0 or params_str == 'void':
|
||||
pass
|
||||
else:
|
||||
param_index = 0
|
||||
for param_str in params_str.split(','):
|
||||
param = {}
|
||||
param_str = param_str.strip()
|
||||
if param_str.endswith('*') or ' ' not in param_str:
|
||||
param['type'] = normalize_type(param_str)
|
||||
param['identifier'] = 'arg%d' % param_index
|
||||
else:
|
||||
match = re.search('[a-zA-Z0-9_]+$', param_str)
|
||||
param['type'] = normalize_type(param_str[0:match.span()[0]])
|
||||
param['identifier'] = match.group()
|
||||
function['params'].append(param)
|
||||
param_index += 1
|
||||
|
||||
functions.append(function)
|
||||
|
||||
def process_lines(file_str):
|
||||
for line in file_str.splitlines():
|
||||
if reject_line(line):
|
||||
global rejects
|
||||
rejects += line + '\n'
|
||||
continue
|
||||
process_line(line)
|
||||
############################################################################
|
||||
|
||||
def build_param(param, i):
|
||||
ptype = param['type']
|
||||
|
@ -192,7 +146,9 @@ def build_call(function):
|
|||
|
||||
return ' %s(L, %s);\n' % (lfunc, ccall)
|
||||
|
||||
def build_function(function):
|
||||
def build_function(function, do_extern):
|
||||
s = ''
|
||||
|
||||
if len(function['params']) <= 0:
|
||||
s = 'int smlua_func_%s(UNUSED lua_State* L) {\n' % function['identifier']
|
||||
else:
|
||||
|
@ -207,7 +163,6 @@ def build_function(function):
|
|||
i += 1
|
||||
s += '\n'
|
||||
|
||||
global do_extern
|
||||
if do_extern:
|
||||
s += ' extern %s\n' % function['line']
|
||||
|
||||
|
@ -225,12 +180,16 @@ def build_function(function):
|
|||
if 'UNIMPLEMENTED' in s:
|
||||
s = "/*\n" + s + "*/\n"
|
||||
|
||||
global built_functions
|
||||
built_functions += s + "\n"
|
||||
return s + "\n"
|
||||
|
||||
def build_functions():
|
||||
for function in functions:
|
||||
build_function(function)
|
||||
def build_functions(processed_files):
|
||||
s = ''
|
||||
for processed_file in processed_files:
|
||||
s += gen_comment_header(processed_file['filename'])
|
||||
|
||||
for function in processed_file['functions']:
|
||||
s += build_function(function, processed_file['extern'])
|
||||
return s
|
||||
|
||||
def build_bind(function):
|
||||
s = 'smlua_bind_function(L, "%s", smlua_func_%s);' % (function['identifier'], function['identifier'])
|
||||
|
@ -238,45 +197,172 @@ def build_bind(function):
|
|||
s = ' ' + s
|
||||
else:
|
||||
s = ' //' + s + ' <--- UNIMPLEMENTED'
|
||||
global built_binds
|
||||
built_binds += s + "\n"
|
||||
return s + "\n"
|
||||
|
||||
def build_binds(fname):
|
||||
global built_binds
|
||||
built_binds += "\n // " + fname.split('/')[-1] + "\n"
|
||||
for function in functions:
|
||||
build_bind(function)
|
||||
def build_binds(processed_files):
|
||||
s = ''
|
||||
for processed_file in processed_files:
|
||||
s += "\n // " + processed_file['filename'] + "\n"
|
||||
|
||||
for function in processed_file['functions']:
|
||||
s += build_bind(function)
|
||||
return s
|
||||
|
||||
############################################################################
|
||||
|
||||
def process_function(line):
|
||||
function = {}
|
||||
|
||||
line = line.strip()
|
||||
function['line'] = line
|
||||
|
||||
line = line.replace('UNUSED', '')
|
||||
|
||||
match = re.search('[a-zA-Z0-9_]+\(', line)
|
||||
function['type'] = normalize_type(line[0:match.span()[0]])
|
||||
function['identifier'] = match.group()[0:-1]
|
||||
|
||||
function['params'] = []
|
||||
params_str = line.split('(', 1)[1].rsplit(')', 1)[0].strip()
|
||||
if len(params_str) == 0 or params_str == 'void':
|
||||
pass
|
||||
else:
|
||||
param_index = 0
|
||||
for param_str in params_str.split(','):
|
||||
param = {}
|
||||
param_str = param_str.strip()
|
||||
if param_str.endswith('*') or ' ' not in param_str:
|
||||
param['type'] = normalize_type(param_str)
|
||||
param['identifier'] = 'arg%d' % param_index
|
||||
else:
|
||||
match = re.search('[a-zA-Z0-9_]+$', param_str)
|
||||
param['type'] = normalize_type(param_str[0:match.span()[0]])
|
||||
param['identifier'] = match.group()
|
||||
function['params'].append(param)
|
||||
param_index += 1
|
||||
|
||||
return function
|
||||
|
||||
def process_functions(file_str):
|
||||
functions = []
|
||||
for line in file_str.splitlines():
|
||||
if reject_line(line):
|
||||
global rejects
|
||||
rejects += line + '\n'
|
||||
continue
|
||||
functions.append(process_function(line))
|
||||
|
||||
functions = sorted(functions, key=lambda d: d['identifier'])
|
||||
return functions
|
||||
|
||||
def process_file(fname):
|
||||
functions.clear()
|
||||
global do_extern
|
||||
do_extern = fname.endswith(".c")
|
||||
processed_file = {}
|
||||
processed_file['filename'] = fname.replace('\\', '/').split('/')[-1]
|
||||
processed_file['extern'] = fname.endswith('.c')
|
||||
|
||||
with open(fname) as file:
|
||||
process_lines(file.read())
|
||||
build_functions()
|
||||
build_binds(fname)
|
||||
processed_file['functions'] = process_functions(file.read())
|
||||
|
||||
return processed_file
|
||||
|
||||
def process_files():
|
||||
processed_files = []
|
||||
dir_path = os.path.dirname(os.path.realpath(__file__)) + '/lua_functions/'
|
||||
files = os.listdir(dir_path)
|
||||
files = sorted(os.listdir(dir_path))
|
||||
for f in files:
|
||||
comment_header = "// " + f + " //"
|
||||
comment_line = "/" * len(comment_header)
|
||||
processed_files.append(process_file(dir_path + f))
|
||||
return processed_files
|
||||
|
||||
global built_functions
|
||||
built_functions += gen_comment_header(f)
|
||||
############################################################################
|
||||
|
||||
process_file(dir_path + f)
|
||||
def doc_function_index(processed_files):
|
||||
s = '# Supported Functions\n'
|
||||
for processed_file in processed_files:
|
||||
s += '- %s\n' % processed_file['filename']
|
||||
for function in processed_file['functions']:
|
||||
s += ' - [%s](#%s)\n' % (function['identifier'], function['identifier'])
|
||||
s += '\n<br />\n\n'
|
||||
return s
|
||||
|
||||
def doc_function(function):
|
||||
fid = function['identifier']
|
||||
s = '\n## [%s](#%s)\n' % (fid, fid)
|
||||
|
||||
rtype, rlink = translate_type_to_lua(function['type'])
|
||||
param_str = ', '.join([x['identifier'] for x in function['params']])
|
||||
|
||||
s += "\n### Lua Example\n"
|
||||
if rtype != None:
|
||||
s += "`local %sValue = %s(%s)`\n" % (rtype, fid, param_str)
|
||||
else:
|
||||
s += "`%s(%s)`\n" % (fid, param_str)
|
||||
|
||||
s += '\n### Parameters\n'
|
||||
if len(function['params']) > 0:
|
||||
s += '| Field | Type |\n'
|
||||
s += '| ----- | ---- |\n'
|
||||
for param in function['params']:
|
||||
pid = param['identifier']
|
||||
ptype = param['type']
|
||||
ptype, plink = translate_type_to_lua(ptype)
|
||||
|
||||
if plink:
|
||||
s += '| %s | [%s](structs.md#%s) |\n' % (pid, ptype, ptype)
|
||||
continue
|
||||
|
||||
s += '| %s | %s |\n' % (pid, ptype)
|
||||
|
||||
else:
|
||||
s += '- None\n'
|
||||
|
||||
s += '\n### Returns\n'
|
||||
if rtype != None:
|
||||
if rlink:
|
||||
s += '[%s](structs.md#%s)\n' % (rtype, rtype)
|
||||
else:
|
||||
s += '- %s\n' % rtype
|
||||
else:
|
||||
s += '- None\n'
|
||||
|
||||
|
||||
s += '\n### C Prototype\n'
|
||||
s += '`%s`\n' % function['line'].strip()
|
||||
|
||||
s += '\n[:arrow_up_small:](#)\n\n<br />\n'
|
||||
|
||||
return s
|
||||
|
||||
def doc_functions(functions):
|
||||
s = ''
|
||||
for function in functions:
|
||||
s += doc_function(function)
|
||||
return s
|
||||
|
||||
def doc_files(processed_files):
|
||||
s = '## [:rewind: Lua Reference](lua.md)\n\n'
|
||||
s += doc_function_index(processed_files)
|
||||
for processed_file in processed_files:
|
||||
s += '\n---'
|
||||
s += '\n# functions from %s\n\n<br />\n\n' % processed_file['filename']
|
||||
s += doc_functions(processed_file['functions'])
|
||||
|
||||
with open(get_path(docs_lua_functions), 'w') as out:
|
||||
out.write(s)
|
||||
|
||||
############################################################################
|
||||
|
||||
def main():
|
||||
process_files()
|
||||
processed_files = process_files()
|
||||
|
||||
built_functions = build_functions(processed_files)
|
||||
built_binds = build_binds(processed_files)
|
||||
|
||||
filename = get_path(out_filename)
|
||||
with open(filename, 'w') as out:
|
||||
out.write(template.replace("$[FUNCTIONS]", built_functions).replace("$[BINDS]", built_binds))
|
||||
print('REJECTS:')
|
||||
print(rejects)
|
||||
doc_files(processed_files)
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -13,6 +13,7 @@ in_files = [
|
|||
]
|
||||
|
||||
smlua_cobject_autogen = 'src/pc/lua/smlua_cobject_autogen'
|
||||
docs_lua_structs = 'docs/lua/structs.md'
|
||||
|
||||
c_template = """/* THIS FILE IS AUTOGENERATED */
|
||||
/* SHOULD NOT BE MANUALLY CHANGED */
|
||||
|
@ -56,6 +57,11 @@ override_field_immutable = {
|
|||
"Character": [ "*" ],
|
||||
}
|
||||
|
||||
sLuaManuallyDefinedStructs = [
|
||||
'struct Vec3f { float x; float y; float z; }',
|
||||
'struct Vec3s { s16 x; s16 y; s16 z; }'
|
||||
]
|
||||
|
||||
############################################################################
|
||||
|
||||
def strip_internal_blocks(body):
|
||||
|
@ -149,6 +155,8 @@ def parse_struct(struct_str):
|
|||
|
||||
struct['fields'].append(field)
|
||||
|
||||
struct['fields'] = sorted(struct['fields'], key=lambda d: d['identifier'])
|
||||
|
||||
return struct
|
||||
|
||||
def parse_structs(struct_strs):
|
||||
|
@ -162,28 +170,34 @@ def parse_structs(struct_strs):
|
|||
sLuaObjectTable = []
|
||||
sLotAutoGenList = []
|
||||
|
||||
def get_struct_field_info(struct, field):
|
||||
sid = struct['identifier']
|
||||
fid = field['identifier']
|
||||
ftype = field['type']
|
||||
|
||||
if sid in override_field_names and fid in override_field_names[sid]:
|
||||
fid = override_field_names[sid][fid]
|
||||
|
||||
if sid in override_field_types and fid in override_field_types[sid]:
|
||||
ftype = override_field_types[sid][fid]
|
||||
|
||||
lvt = translate_type_to_lvt(ftype)
|
||||
lot = translate_type_to_lot(ftype)
|
||||
fimmutable = str(lvt == 'LVT_COBJECT' or lvt == 'LVT_COBJECT_P').lower()
|
||||
|
||||
if sid in override_field_immutable:
|
||||
if fid in override_field_immutable[sid] or '*' in override_field_immutable[sid]:
|
||||
fimmutable = 'true'
|
||||
|
||||
return fid, ftype, fimmutable, lvt, lot
|
||||
|
||||
def build_struct(struct):
|
||||
sid = struct['identifier']
|
||||
|
||||
# build up table and track column width
|
||||
field_table = []
|
||||
for field in struct['fields']:
|
||||
fid = field['identifier']
|
||||
ftype = field['type']
|
||||
|
||||
if sid in override_field_names and fid in override_field_names[sid]:
|
||||
fid = override_field_names[sid][fid]
|
||||
|
||||
if sid in override_field_types and fid in override_field_types[sid]:
|
||||
ftype = override_field_types[sid][fid]
|
||||
|
||||
lvt = translate_type_to_lvt(ftype)
|
||||
lot = translate_type_to_lot(ftype)
|
||||
fimmutable = str(lvt == 'LVT_COBJECT' or lvt == 'LVT_COBJECT_P').lower()
|
||||
|
||||
if sid in override_field_immutable:
|
||||
if fid in override_field_immutable[sid] or '*' in override_field_immutable[sid]:
|
||||
fimmutable = 'true'
|
||||
fid, ftype, fimmutable, lvt, lot = get_struct_field_info(struct, field)
|
||||
|
||||
row = []
|
||||
row.append(' { ' )
|
||||
|
@ -262,6 +276,57 @@ def build_includes():
|
|||
s += '#include "%s"\n' % in_file
|
||||
return s
|
||||
|
||||
|
||||
############################################################################
|
||||
|
||||
def doc_struct_index(structs):
|
||||
s = '# Supported Structs\n'
|
||||
for struct in structs:
|
||||
sid = struct['identifier']
|
||||
s += '- [%s](#%s)\n' % (sid, sid)
|
||||
s += '\n<br />\n\n'
|
||||
return s
|
||||
|
||||
def doc_struct(struct):
|
||||
sid = struct['identifier']
|
||||
s = '## [%s](#%s)\n\n' % (sid, sid)
|
||||
s += "| Field | Type |\n"
|
||||
s += "| ----- | ---- |\n"
|
||||
|
||||
|
||||
# build doc table
|
||||
field_table = []
|
||||
for field in struct['fields']:
|
||||
fid, ftype, fimmutable, lvt, lot = get_struct_field_info(struct, field)
|
||||
if '???' in lvt or '???' in lot:
|
||||
continue
|
||||
|
||||
ftype, do_link = translate_type_to_lua(ftype)
|
||||
|
||||
if do_link:
|
||||
s += '| %s | [%s](#%s) |\n' % (fid, ftype, ftype)
|
||||
continue
|
||||
|
||||
s += '| %s | %s |\n' % (fid, ftype)
|
||||
|
||||
s += '\n[:arrow_up_small:](#)\n\n<br />\n'
|
||||
|
||||
return s
|
||||
|
||||
def doc_structs(structs):
|
||||
structs.extend(parse_structs(sLuaManuallyDefinedStructs))
|
||||
structs = sorted(structs, key=lambda d: d['identifier'])
|
||||
|
||||
s = '## [:rewind: Lua Reference](lua.md)\n\n'
|
||||
s += doc_struct_index(structs)
|
||||
for struct in structs:
|
||||
if struct['identifier'] in exclude_structs:
|
||||
continue
|
||||
s += doc_struct(struct) + '\n'
|
||||
|
||||
with open(get_path(docs_lua_structs), 'w') as out:
|
||||
out.write(s)
|
||||
|
||||
############################################################################
|
||||
|
||||
def build_files():
|
||||
|
@ -271,6 +336,8 @@ def build_files():
|
|||
extracted.extend(extract_structs(path))
|
||||
|
||||
parsed = parse_structs(extracted)
|
||||
parsed = sorted(parsed, key=lambda d: d['identifier'])
|
||||
|
||||
built_body = build_body(parsed)
|
||||
built_enum = build_lot_enum()
|
||||
built_include = build_includes()
|
||||
|
@ -283,6 +350,8 @@ def build_files():
|
|||
with open(out_h_filename, 'w') as out:
|
||||
out.write(h_template.replace("$[BODY]", built_enum))
|
||||
|
||||
doc_structs(parsed)
|
||||
|
||||
############################################################################
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -1253,6 +1253,10 @@ MARIO_ANIM_RETURN_FROM_STAR_DANCE = 206
|
|||
MARIO_ANIM_FORWARD_SPINNING_FLIP = 207
|
||||
MARIO_ANIM_TRIPLE_JUMP_FLY = 208
|
||||
|
||||
-----------
|
||||
-- shake --
|
||||
-----------
|
||||
|
||||
SHAKE_ATTACK = 1
|
||||
SHAKE_GROUND_POUND = 2
|
||||
SHAKE_SMALL_DAMAGE = 3
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,33 @@
|
|||
# Lua Reference
|
||||
|
||||
The Lua scripting API is in early development.
|
||||
|
||||
Expect many more things to be supported in the future.
|
||||
|
||||
<br />
|
||||
|
||||
## How to install Lua mods
|
||||
Lua scripts you make can be placed either the `mods` folder in the base directory, or in `<SAVE FILE LOCATION>/mods`
|
||||
|
||||
<br />
|
||||
|
||||
## Globals
|
||||
| Identifier | Type | Description |
|
||||
| :-------- | :--: | :---------: |
|
||||
| gMarioStates[MAX_PLAYERS] | [MarioState](structs.md#MarioState) | An array of length MAX_PLAYERS containing mario states |
|
||||
| gCharacter[CT_MAX] | [Character](structs.md#Character) | An array of length CT_MAX containing character information |
|
||||
|
||||
<br />
|
||||
|
||||
## Exposed from SM64
|
||||
- [Constants](constants.md)
|
||||
- [Functions](functions.md)
|
||||
- [Structs](structs.md)
|
||||
|
||||
<br />
|
||||
|
||||
## Example Lua mods
|
||||
- [Extended Moveset](../../mods/extended-moveset.lua)
|
||||
- [Character Movesets](../../mods/character-movesets.lua)
|
||||
- [Low Gravity](../../mods/low-gravity.lua)
|
||||
- [Faster Swimming](../../mods/faster-swimming.lua)
|
|
@ -0,0 +1,858 @@
|
|||
## [:rewind: Lua Reference](lua.md)
|
||||
|
||||
# Supported Structs
|
||||
- [Animation](#Animation)
|
||||
- [Area](#Area)
|
||||
- [Camera](#Camera)
|
||||
- [CameraFOVStatus](#CameraFOVStatus)
|
||||
- [CameraStoredInfo](#CameraStoredInfo)
|
||||
- [CameraTrigger](#CameraTrigger)
|
||||
- [Character](#Character)
|
||||
- [Controller](#Controller)
|
||||
- [Cutscene](#Cutscene)
|
||||
- [CutsceneSplinePoint](#CutsceneSplinePoint)
|
||||
- [CutsceneVariable](#CutsceneVariable)
|
||||
- [FloorGeometry](#FloorGeometry)
|
||||
- [GraphNode](#GraphNode)
|
||||
- [GraphNodeObject](#GraphNodeObject)
|
||||
- [GraphNodeObject_sub](#GraphNodeObject_sub)
|
||||
- [HandheldShakePoint](#HandheldShakePoint)
|
||||
- [InstantWarp](#InstantWarp)
|
||||
- [LakituState](#LakituState)
|
||||
- [LinearTransitionPoint](#LinearTransitionPoint)
|
||||
- [MarioAnimDmaRelatedThing](#MarioAnimDmaRelatedThing)
|
||||
- [MarioAnimation](#MarioAnimation)
|
||||
- [MarioBodyState](#MarioBodyState)
|
||||
- [MarioState](#MarioState)
|
||||
- [ModeTransitionInfo](#ModeTransitionInfo)
|
||||
- [Object](#Object)
|
||||
- [ObjectHitbox](#ObjectHitbox)
|
||||
- [ObjectNode](#ObjectNode)
|
||||
- [ObjectWarpNode](#ObjectWarpNode)
|
||||
- [OffsetSizePair](#OffsetSizePair)
|
||||
- [ParallelTrackingPoint](#ParallelTrackingPoint)
|
||||
- [PlayerCameraState](#PlayerCameraState)
|
||||
- [PlayerGeometry](#PlayerGeometry)
|
||||
- [SPTask](#SPTask)
|
||||
- [SpawnInfo](#SpawnInfo)
|
||||
- [Surface](#Surface)
|
||||
- [TransitionInfo](#TransitionInfo)
|
||||
- [UnusedArea28](#UnusedArea28)
|
||||
- [VblankHandler](#VblankHandler)
|
||||
- [Vec3f](#Vec3f)
|
||||
- [Vec3s](#Vec3s)
|
||||
- [WallCollisionData](#WallCollisionData)
|
||||
- [WarpNode](#WarpNode)
|
||||
- [WarpTransition](#WarpTransition)
|
||||
- [WarpTransitionData](#WarpTransitionData)
|
||||
- [Waypoint](#Waypoint)
|
||||
- [Whirlpool](#Whirlpool)
|
||||
|
||||
<br />
|
||||
|
||||
## [Animation](#Animation)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| flags | integer |
|
||||
| length | integer |
|
||||
| animYTransDivisor | integer |
|
||||
| startFrame | integer |
|
||||
| loopStart | integer |
|
||||
| loopEnd | integer |
|
||||
| unusedBoneCount | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Area](#Area)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| camera | [Camera](#Camera) |
|
||||
| flags | integer |
|
||||
| index | integer |
|
||||
| instantWarps | [InstantWarp](#InstantWarp) |
|
||||
| musicParam | integer |
|
||||
| musicParam2 | integer |
|
||||
| objectSpawnInfos | [SpawnInfo](#SpawnInfo) |
|
||||
| paintingWarpNodes | [WarpNode](#WarpNode) |
|
||||
| terrainType | integer |
|
||||
| warpNodes | [ObjectWarpNode](#ObjectWarpNode) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Camera](#Camera)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| areaCenX | number |
|
||||
| areaCenY | number |
|
||||
| areaCenZ | number |
|
||||
| cutscene | integer |
|
||||
| defMode | integer |
|
||||
| doorStatus | integer |
|
||||
| focus | [Vec3f](#Vec3f) |
|
||||
| mode | integer |
|
||||
| nextYaw | integer |
|
||||
| pos | [Vec3f](#Vec3f) |
|
||||
| unusedVec1 | [Vec3f](#Vec3f) |
|
||||
| yaw | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [CameraFOVStatus](#CameraFOVStatus)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| decay | integer |
|
||||
| fov | number |
|
||||
| fovFunc | integer |
|
||||
| fovOffset | number |
|
||||
| shakeAmplitude | number |
|
||||
| shakePhase | integer |
|
||||
| shakeSpeed | integer |
|
||||
| unusedIsSleeping | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [CameraStoredInfo](#CameraStoredInfo)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| cannonYOffset | number |
|
||||
| focus | [Vec3f](#Vec3f) |
|
||||
| panDist | number |
|
||||
| pos | [Vec3f](#Vec3f) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [CameraTrigger](#CameraTrigger)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| area | integer |
|
||||
| boundsX | integer |
|
||||
| boundsY | integer |
|
||||
| boundsYaw | integer |
|
||||
| boundsZ | integer |
|
||||
| centerX | integer |
|
||||
| centerY | integer |
|
||||
| centerZ | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Character](#Character)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| animOffsetEnabled | integer |
|
||||
| animOffsetFeet | number |
|
||||
| animOffsetHand | number |
|
||||
| animOffsetLowYPoint | number |
|
||||
| cameraHudHead | integer |
|
||||
| capEnemyLayer | integer |
|
||||
| capMetalModelId | integer |
|
||||
| capMetalWingModelId | integer |
|
||||
| capModelId | integer |
|
||||
| capWingModelId | integer |
|
||||
| modelId | integer |
|
||||
| soundAttacked | integer |
|
||||
| soundCoughing1 | integer |
|
||||
| soundCoughing2 | integer |
|
||||
| soundCoughing3 | integer |
|
||||
| soundDoh | integer |
|
||||
| soundDrowning | integer |
|
||||
| soundDying | integer |
|
||||
| soundEeuh | integer |
|
||||
| soundFreqScale | number |
|
||||
| soundGameOver | integer |
|
||||
| soundGroundPoundWah | integer |
|
||||
| soundHaha | integer |
|
||||
| soundHaha_2 | integer |
|
||||
| soundHello | integer |
|
||||
| soundHereWeGo | integer |
|
||||
| soundHoohoo | integer |
|
||||
| soundHrmm | integer |
|
||||
| soundImaTired | integer |
|
||||
| soundMamaMia | integer |
|
||||
| soundOnFire | integer |
|
||||
| soundOoof | integer |
|
||||
| soundOoof2 | integer |
|
||||
| soundPanting | integer |
|
||||
| soundPantingCold | integer |
|
||||
| soundPressStartToPlay | integer |
|
||||
| soundPunchHoo | integer |
|
||||
| soundPunchWah | integer |
|
||||
| soundPunchYah | integer |
|
||||
| soundSnoring1 | integer |
|
||||
| soundSnoring2 | integer |
|
||||
| soundSnoring3 | integer |
|
||||
| soundSoLongaBowser | integer |
|
||||
| soundTwirlBounce | integer |
|
||||
| soundUh | integer |
|
||||
| soundUh2 | integer |
|
||||
| soundUh2_2 | integer |
|
||||
| soundWaaaooow | integer |
|
||||
| soundWah2 | integer |
|
||||
| soundWhoa | integer |
|
||||
| soundYahWahHoo | integer |
|
||||
| soundYahoo | integer |
|
||||
| soundYahooWahaYippee | integer |
|
||||
| soundYawning | integer |
|
||||
| type | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Controller](#Controller)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| buttonDown | integer |
|
||||
| buttonPressed | integer |
|
||||
| extStickX | integer |
|
||||
| extStickY | integer |
|
||||
| port | integer |
|
||||
| rawStickX | integer |
|
||||
| rawStickY | integer |
|
||||
| stickMag | number |
|
||||
| stickX | number |
|
||||
| stickY | number |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Cutscene](#Cutscene)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| duration | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [CutsceneSplinePoint](#CutsceneSplinePoint)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| index | integer |
|
||||
| point | [Vec3s](#Vec3s) |
|
||||
| speed | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [CutsceneVariable](#CutsceneVariable)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| angle | [Vec3s](#Vec3s) |
|
||||
| point | [Vec3f](#Vec3f) |
|
||||
| unused1 | integer |
|
||||
| unused2 | integer |
|
||||
| unusedPoint | [Vec3f](#Vec3f) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [FloorGeometry](#FloorGeometry)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| normalX | number |
|
||||
| normalY | number |
|
||||
| normalZ | number |
|
||||
| originOffset | number |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [GraphNode](#GraphNode)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| children | [GraphNode](#GraphNode) |
|
||||
| flags | integer |
|
||||
| next | [GraphNode](#GraphNode) |
|
||||
| parent | [GraphNode](#GraphNode) |
|
||||
| prev | [GraphNode](#GraphNode) |
|
||||
| type | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [GraphNodeObject](#GraphNodeObject)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| angle | [Vec3s](#Vec3s) |
|
||||
| cameraToObject | [Vec3f](#Vec3f) |
|
||||
| node | [GraphNode](#GraphNode) |
|
||||
| pos | [Vec3f](#Vec3f) |
|
||||
| prevAngle | [Vec3s](#Vec3s) |
|
||||
| prevPos | [Vec3f](#Vec3f) |
|
||||
| prevScale | [Vec3f](#Vec3f) |
|
||||
| prevScaleTimestamp | integer |
|
||||
| prevShadowPos | [Vec3f](#Vec3f) |
|
||||
| prevShadowPosTimestamp | integer |
|
||||
| prevThrowMatrixTimestamp | integer |
|
||||
| prevTimestamp | integer |
|
||||
| scale | [Vec3f](#Vec3f) |
|
||||
| sharedChild | [GraphNode](#GraphNode) |
|
||||
| skipInterpolationTimestamp | integer |
|
||||
| unk18 | integer |
|
||||
| unk19 | integer |
|
||||
| animInfo | [GraphNodeObject_sub](#GraphNodeObject_sub) |
|
||||
| unk4C | [SpawnInfo](#SpawnInfo) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [GraphNodeObject_sub](#GraphNodeObject_sub)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| animAccel | integer |
|
||||
| animFrame | integer |
|
||||
| animFrameAccelAssist | integer |
|
||||
| animID | integer |
|
||||
| animTimer | integer |
|
||||
| animYTrans | integer |
|
||||
| curAnim | [Animation](#Animation) |
|
||||
| prevAnimFrame | integer |
|
||||
| prevAnimFrameTimestamp | integer |
|
||||
| prevAnimID | integer |
|
||||
| prevAnimPtr | [Animation](#Animation) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [HandheldShakePoint](#HandheldShakePoint)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| index | integer |
|
||||
| pad | integer |
|
||||
| point | [Vec3s](#Vec3s) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [InstantWarp](#InstantWarp)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| area | integer |
|
||||
| displacement | [Vec3s](#Vec3s) |
|
||||
| id | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [LakituState](#LakituState)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| curFocus | [Vec3f](#Vec3f) |
|
||||
| curPos | [Vec3f](#Vec3f) |
|
||||
| defMode | integer |
|
||||
| focHSpeed | number |
|
||||
| focVSpeed | number |
|
||||
| focus | [Vec3f](#Vec3f) |
|
||||
| focusDistance | number |
|
||||
| goalFocus | [Vec3f](#Vec3f) |
|
||||
| goalPos | [Vec3f](#Vec3f) |
|
||||
| keyDanceRoll | integer |
|
||||
| lastFrameAction | integer |
|
||||
| mode | integer |
|
||||
| nextYaw | integer |
|
||||
| oldPitch | integer |
|
||||
| oldRoll | integer |
|
||||
| oldYaw | integer |
|
||||
| pos | [Vec3f](#Vec3f) |
|
||||
| posHSpeed | number |
|
||||
| posVSpeed | number |
|
||||
| roll | integer |
|
||||
| shakeMagnitude | [Vec3s](#Vec3s) |
|
||||
| shakePitchDecay | integer |
|
||||
| shakePitchPhase | integer |
|
||||
| shakePitchVel | integer |
|
||||
| shakeRollDecay | integer |
|
||||
| shakeRollPhase | integer |
|
||||
| shakeRollVel | integer |
|
||||
| shakeYawDecay | integer |
|
||||
| shakeYawPhase | integer |
|
||||
| shakeYawVel | integer |
|
||||
| skipCameraInterpolationTimestamp | integer |
|
||||
| unused | integer |
|
||||
| unusedVec1 | [Vec3f](#Vec3f) |
|
||||
| unusedVec2 | [Vec3s](#Vec3s) |
|
||||
| yaw | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [LinearTransitionPoint](#LinearTransitionPoint)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| dist | number |
|
||||
| focus | [Vec3f](#Vec3f) |
|
||||
| pitch | integer |
|
||||
| pos | [Vec3f](#Vec3f) |
|
||||
| yaw | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [MarioAnimation](#MarioAnimation)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| targetAnim | [Animation](#Animation) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [MarioBodyState](#MarioBodyState)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| action | integer |
|
||||
| capState | integer |
|
||||
| eyeState | integer |
|
||||
| grabPos | integer |
|
||||
| handState | integer |
|
||||
| headAngle | [Vec3s](#Vec3s) |
|
||||
| heldObjLastPosition | [Vec3f](#Vec3f) |
|
||||
| modelState | integer |
|
||||
| punchState | integer |
|
||||
| torsoAngle | [Vec3s](#Vec3s) |
|
||||
| torsoPos | [Vec3f](#Vec3f) |
|
||||
| wingFlutter | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [MarioState](#MarioState)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| action | integer |
|
||||
| actionArg | integer |
|
||||
| actionState | integer |
|
||||
| actionTimer | integer |
|
||||
| angleVel | [Vec3s](#Vec3s) |
|
||||
| animation | [MarioAnimation](#MarioAnimation) |
|
||||
| area | [Area](#Area) |
|
||||
| bubbleObj | [Object](#Object) |
|
||||
| capTimer | integer |
|
||||
| ceil | [Surface](#Surface) |
|
||||
| ceilHeight | number |
|
||||
| character | [Character](#Character) |
|
||||
| collidedObjInteractTypes | integer |
|
||||
| controller | [Controller](#Controller) |
|
||||
| curAnimOffset | number |
|
||||
| currentRoom | integer |
|
||||
| doubleJumpTimer | integer |
|
||||
| faceAngle | [Vec3s](#Vec3s) |
|
||||
| fadeWarpOpacity | integer |
|
||||
| flags | integer |
|
||||
| floor | [Surface](#Surface) |
|
||||
| floorAngle | integer |
|
||||
| floorHeight | number |
|
||||
| forwardVel | number |
|
||||
| framesSinceA | integer |
|
||||
| framesSinceB | integer |
|
||||
| freeze | integer |
|
||||
| healCounter | integer |
|
||||
| health | integer |
|
||||
| heldByObj | [Object](#Object) |
|
||||
| heldObj | [Object](#Object) |
|
||||
| hurtCounter | integer |
|
||||
| input | integer |
|
||||
| intendedMag | number |
|
||||
| intendedYaw | integer |
|
||||
| interactObj | [Object](#Object) |
|
||||
| invincTimer | integer |
|
||||
| isSnoring | integer |
|
||||
| marioBodyState | [MarioBodyState](#MarioBodyState) |
|
||||
| marioObj | [Object](#Object) |
|
||||
| minimumBoneY | number |
|
||||
| nonInstantWarpPos | [Vec3f](#Vec3f) |
|
||||
| numCoins | integer |
|
||||
| numKeys | integer |
|
||||
| numLives | integer |
|
||||
| numStars | integer |
|
||||
| particleFlags | integer |
|
||||
| peakHeight | number |
|
||||
| playerIndex | integer |
|
||||
| pos | [Vec3f](#Vec3f) |
|
||||
| prevAction | integer |
|
||||
| prevNumStarsForDialog | integer |
|
||||
| quicksandDepth | number |
|
||||
| riddenObj | [Object](#Object) |
|
||||
| slideVelX | number |
|
||||
| slideVelZ | number |
|
||||
| slideYaw | integer |
|
||||
| spawnInfo | [SpawnInfo](#SpawnInfo) |
|
||||
| splineKeyframeFraction | number |
|
||||
| splineState | integer |
|
||||
| squishTimer | integer |
|
||||
| statusForCamera | [PlayerCameraState](#PlayerCameraState) |
|
||||
| terrainSoundAddend | integer |
|
||||
| twirlYaw | integer |
|
||||
| unkB0 | integer |
|
||||
| unkC4 | number |
|
||||
| usedObj | [Object](#Object) |
|
||||
| vel | [Vec3f](#Vec3f) |
|
||||
| wall | [Surface](#Surface) |
|
||||
| wallKickTimer | integer |
|
||||
| wasNetworkVisible | integer |
|
||||
| waterLevel | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [ModeTransitionInfo](#ModeTransitionInfo)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| frame | integer |
|
||||
| lastMode | integer |
|
||||
| max | integer |
|
||||
| newMode | integer |
|
||||
| transitionEnd | [LinearTransitionPoint](#LinearTransitionPoint) |
|
||||
| transitionStart | [LinearTransitionPoint](#LinearTransitionPoint) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Object](#Object)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| activeFlags | integer |
|
||||
| areaTimer | integer |
|
||||
| areaTimerDuration | integer |
|
||||
| areaTimerType | integer |
|
||||
| bhvDelayTimer | integer |
|
||||
| bhvStackIndex | integer |
|
||||
| collidedObjInteractTypes | integer |
|
||||
| createdThroughNetwork | integer |
|
||||
| globalPlayerIndex | integer |
|
||||
| header | [ObjectNode](#ObjectNode) |
|
||||
| heldByPlayerIndex | integer |
|
||||
| hitboxDownOffset | number |
|
||||
| hitboxHeight | number |
|
||||
| hitboxRadius | number |
|
||||
| hurtboxHeight | number |
|
||||
| hurtboxRadius | number |
|
||||
| numCollidedObjs | integer |
|
||||
| parentObj | [Object](#Object) |
|
||||
| platform | [Object](#Object) |
|
||||
| prevObj | [Object](#Object) |
|
||||
| respawnInfoType | integer |
|
||||
| unused1 | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [ObjectHitbox](#ObjectHitbox)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| damageOrCoinValue | integer |
|
||||
| downOffset | integer |
|
||||
| health | integer |
|
||||
| height | integer |
|
||||
| hurtboxHeight | integer |
|
||||
| hurtboxRadius | integer |
|
||||
| interactType | integer |
|
||||
| numLootCoins | integer |
|
||||
| radius | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [ObjectNode](#ObjectNode)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| gfx | [GraphNodeObject](#GraphNodeObject) |
|
||||
| next | [ObjectNode](#ObjectNode) |
|
||||
| prev | [ObjectNode](#ObjectNode) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [ObjectWarpNode](#ObjectWarpNode)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| next | [ObjectWarpNode](#ObjectWarpNode) |
|
||||
| node | [WarpNode](#WarpNode) |
|
||||
| object | [Object](#Object) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [OffsetSizePair](#OffsetSizePair)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| offset | integer |
|
||||
| size | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [ParallelTrackingPoint](#ParallelTrackingPoint)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| distThresh | number |
|
||||
| pos | [Vec3f](#Vec3f) |
|
||||
| startOfPath | integer |
|
||||
| zoom | number |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [PlayerCameraState](#PlayerCameraState)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| action | integer |
|
||||
| cameraEvent | integer |
|
||||
| faceAngle | [Vec3s](#Vec3s) |
|
||||
| headRotation | [Vec3s](#Vec3s) |
|
||||
| pos | [Vec3f](#Vec3f) |
|
||||
| unused | integer |
|
||||
| usedObj | [Object](#Object) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [PlayerGeometry](#PlayerGeometry)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| currCeil | [Surface](#Surface) |
|
||||
| currCeilHeight | number |
|
||||
| currCeilType | integer |
|
||||
| currFloor | [Surface](#Surface) |
|
||||
| currFloorHeight | number |
|
||||
| currFloorType | integer |
|
||||
| prevCeil | [Surface](#Surface) |
|
||||
| prevCeilHeight | number |
|
||||
| prevCeilType | integer |
|
||||
| prevFloor | [Surface](#Surface) |
|
||||
| prevFloorHeight | number |
|
||||
| prevFloorType | integer |
|
||||
| waterHeight | number |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [SpawnInfo](#SpawnInfo)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| activeAreaIndex | integer |
|
||||
| areaIndex | integer |
|
||||
| behaviorArg | integer |
|
||||
| next | [SpawnInfo](#SpawnInfo) |
|
||||
| startAngle | [Vec3s](#Vec3s) |
|
||||
| startPos | [Vec3s](#Vec3s) |
|
||||
| unk18 | [GraphNode](#GraphNode) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Surface](#Surface)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| flags | integer |
|
||||
| force | integer |
|
||||
| lowerY | integer |
|
||||
| modifiedTimestamp | integer |
|
||||
| normal | [Vec3f](#Vec3f) |
|
||||
| object | [Object](#Object) |
|
||||
| originOffset | number |
|
||||
| prevVertex1 | [Vec3s](#Vec3s) |
|
||||
| prevVertex2 | [Vec3s](#Vec3s) |
|
||||
| prevVertex3 | [Vec3s](#Vec3s) |
|
||||
| room | integer |
|
||||
| type | integer |
|
||||
| upperY | integer |
|
||||
| vertex1 | [Vec3s](#Vec3s) |
|
||||
| vertex2 | [Vec3s](#Vec3s) |
|
||||
| vertex3 | [Vec3s](#Vec3s) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [TransitionInfo](#TransitionInfo)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| focDist | number |
|
||||
| focPitch | integer |
|
||||
| focYaw | integer |
|
||||
| framesLeft | integer |
|
||||
| marioPos | [Vec3f](#Vec3f) |
|
||||
| pad | integer |
|
||||
| posDist | number |
|
||||
| posPitch | integer |
|
||||
| posYaw | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Vec3f](#Vec3f)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| x | float |
|
||||
| y | float |
|
||||
| z | float |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Vec3s](#Vec3s)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| x | integer |
|
||||
| y | integer |
|
||||
| z | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [WallCollisionData](#WallCollisionData)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| numWalls | integer |
|
||||
| offsetY | number |
|
||||
| radius | number |
|
||||
| unk14 | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [WarpNode](#WarpNode)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| destArea | integer |
|
||||
| destLevel | integer |
|
||||
| destNode | integer |
|
||||
| id | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [WarpTransition](#WarpTransition)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| data | [WarpTransitionData](#WarpTransitionData) |
|
||||
| isActive | integer |
|
||||
| pauseRendering | integer |
|
||||
| time | integer |
|
||||
| type | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [WarpTransitionData](#WarpTransitionData)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| blue | integer |
|
||||
| endTexRadius | integer |
|
||||
| endTexX | integer |
|
||||
| endTexY | integer |
|
||||
| green | integer |
|
||||
| red | integer |
|
||||
| startTexRadius | integer |
|
||||
| startTexX | integer |
|
||||
| startTexY | integer |
|
||||
| texTimer | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Waypoint](#Waypoint)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| flags | integer |
|
||||
| pos | [Vec3s](#Vec3s) |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [Whirlpool](#Whirlpool)
|
||||
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| pos | [Vec3s](#Vec3s) |
|
||||
| strength | integer |
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -5,46 +5,46 @@
|
|||
|
||||
enum LuaObjectAutogenType {
|
||||
LOT_AUTOGEN_MIN = 1000,
|
||||
LOT_CONTROLLER,
|
||||
LOT_ANIMATION,
|
||||
LOT_AREA,
|
||||
LOT_CAMERA,
|
||||
LOT_CAMERAFOVSTATUS,
|
||||
LOT_CAMERASTOREDINFO,
|
||||
LOT_CAMERATRIGGER,
|
||||
LOT_CHARACTER,
|
||||
LOT_CONTROLLER,
|
||||
LOT_CUTSCENE,
|
||||
LOT_CUTSCENESPLINEPOINT,
|
||||
LOT_CUTSCENEVARIABLE,
|
||||
LOT_FLOORGEOMETRY,
|
||||
LOT_GRAPHNODE,
|
||||
LOT_GRAPHNODEOBJECT_SUB,
|
||||
LOT_GRAPHNODEOBJECT,
|
||||
LOT_OBJECTNODE,
|
||||
LOT_GRAPHNODEOBJECT_SUB,
|
||||
LOT_HANDHELDSHAKEPOINT,
|
||||
LOT_INSTANTWARP,
|
||||
LOT_LAKITUSTATE,
|
||||
LOT_LINEARTRANSITIONPOINT,
|
||||
LOT_MARIOANIMATION,
|
||||
LOT_MARIOBODYSTATE,
|
||||
LOT_MARIOSTATE,
|
||||
LOT_MODETRANSITIONINFO,
|
||||
LOT_OBJECT,
|
||||
LOT_OBJECTHITBOX,
|
||||
LOT_WAYPOINT,
|
||||
LOT_SURFACE,
|
||||
LOT_MARIOBODYSTATE,
|
||||
LOT_OFFSETSIZEPAIR,
|
||||
LOT_MARIOANIMATION,
|
||||
LOT_MARIOSTATE,
|
||||
LOT_WARPNODE,
|
||||
LOT_OBJECTNODE,
|
||||
LOT_OBJECTWARPNODE,
|
||||
LOT_INSTANTWARP,
|
||||
LOT_SPAWNINFO,
|
||||
LOT_WHIRLPOOL,
|
||||
LOT_AREA,
|
||||
LOT_WARPTRANSITIONDATA,
|
||||
LOT_WARPTRANSITION,
|
||||
LOT_PLAYERCAMERASTATE,
|
||||
LOT_TRANSITIONINFO,
|
||||
LOT_HANDHELDSHAKEPOINT,
|
||||
LOT_CAMERATRIGGER,
|
||||
LOT_CUTSCENE,
|
||||
LOT_CAMERAFOVSTATUS,
|
||||
LOT_CUTSCENESPLINEPOINT,
|
||||
LOT_PLAYERGEOMETRY,
|
||||
LOT_LINEARTRANSITIONPOINT,
|
||||
LOT_MODETRANSITIONINFO,
|
||||
LOT_OFFSETSIZEPAIR,
|
||||
LOT_PARALLELTRACKINGPOINT,
|
||||
LOT_CAMERASTOREDINFO,
|
||||
LOT_CUTSCENEVARIABLE,
|
||||
LOT_CAMERA,
|
||||
LOT_LAKITUSTATE,
|
||||
LOT_CHARACTER,
|
||||
LOT_PLAYERCAMERASTATE,
|
||||
LOT_PLAYERGEOMETRY,
|
||||
LOT_SPAWNINFO,
|
||||
LOT_SURFACE,
|
||||
LOT_TRANSITIONINFO,
|
||||
LOT_WALLCOLLISIONDATA,
|
||||
LOT_FLOORGEOMETRY,
|
||||
LOT_WARPNODE,
|
||||
LOT_WARPTRANSITION,
|
||||
LOT_WARPTRANSITIONDATA,
|
||||
LOT_WAYPOINT,
|
||||
LOT_WHIRLPOOL,
|
||||
LOT_AUTOGEN_MAX,
|
||||
};
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue