Kinoko
A reimplementation of Mario Kart Wii's physics engine in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
ResDic.cc
1
#include "ResDic.hh"
2
3
namespace
Kinoko::Abstract::g3d {
4
5
ResDic::ResDic(
const
void
*data) : m_data(reinterpret_cast<const Data *>(data)) {}
6
8
const
ResDic::NodeData *ResDic::get(
const
char
*pName, u32 len)
const
{
9
const
NodeData *c = &m_data->data[0];
10
const
NodeData *x = &m_data->data[parse<u16>(c->idxLeft)];
11
12
while
(parse<u16>(c->ref) > parse<u16>(x->ref)) {
13
c = x;
14
15
u32 wd = parse<u16>(x->ref) >> 3;
16
u32 pos = parse<u16>(x->ref) & 7;
17
18
if
(wd < len && (pName[wd] >> pos) & 1) {
19
x = &m_data->data[parse<u16>(x->idxRight)];
20
}
else
{
21
x = &m_data->data[parse<u16>(x->idxLeft)];
22
}
23
}
24
25
s32 stringOffset = parse<s32>(x->ofsString);
26
27
if
(stringOffset != 0) {
28
const
char
*xName =
29
reinterpret_cast<
const
char
*
>
(
reinterpret_cast<
uintptr_t
>
(m_data) + stringOffset);
30
31
if
(std::strcmp(pName, xName) == 0) {
32
return
x;
33
}
34
}
35
36
return
nullptr
;
37
}
38
39
}
// namespace Kinoko::Abstract::g3d
abstract
g3d
ResDic.cc
Made by
Malleo
. Logo by
vabold
. Website generated by
Doxygen
1.17.0