summaryrefslogtreecommitdiff
path: root/include/JSystem/J3DGraphLoader/J3DJointFactory.h
blob: 4ca8c129a8732e7eed7bf1c830e85625b2ab5276 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef J3DJOINTFACTORY_H
#define J3DJOINTFACTORY_H

#include "JSystem/J3DGraphBase/J3DTransform.h"

class J3DJoint;
struct J3DJointBlock;

/**
 * @ingroup jsystem-j3d
 * 
 */
struct J3DJointInitData {
    /* 0x00 */ u16 mKind;
    /* 0x02 */ bool mScaleCompensate;
    /* 0x04 */ J3DTransformInfo mTransformInfo;
    /* 0x24 */ f32 mRadius;
    /* 0x28 */ Vec mMin;
    /* 0x2C */ Vec mMax;
};  // Size: 0x30

/**
 * @ingroup jsystem-j3d
 * 
 */
struct J3DJointFactory {
    /* 80337178 */ J3DJointFactory(J3DJointBlock const&);
    /* 803371D0 */ J3DJoint* create(int);

    J3DJointInitData* mJointInitData;
    u16* mIndexTable;

    u16 getKind(int no) const { return mJointInitData[mIndexTable[no]].mKind; }
    u8 getScaleCompensate(int no) const { return mJointInitData[mIndexTable[no]].mScaleCompensate; }
    const J3DTransformInfo& getTransformInfo(int no) const {
        return mJointInitData[mIndexTable[no]].mTransformInfo;
    }
    f32 getRadius(int no) const { return mJointInitData[mIndexTable[no]].mRadius; }
    Vec& getMin(int no) const { return mJointInitData[mIndexTable[no]].mMin; }
    Vec& getMax(int no) const { return mJointInitData[mIndexTable[no]].mMax; }
};

#endif /* J3DJOINTFACTORY_H */