SSBM Decomp
Loading...
Searching...
No Matches
itbombhei.static.h
Go to the documentation of this file.
1#ifndef ITBOMBHEI_STATIC_H
2#define ITBOMBHEI_STATIC_H
3
4#include "ft/ft_0C31.h"
5
6#include "it/forward.h"
7
8#include "it/inlines.h"
9#include "it/it_2725.h"
10#include "it/item.h"
11#include "it/items/itbombhei.h"
12
13static inline void fake_HSD_JObjSetTranslateY(HSD_JObj* jobj, f32 y)
14{
15 HSD_ASSERT(947, jobj);
16 jobj->translate.y = y;
17 if (!(jobj->flags & JOBJ_MTX_INDEP_SRT)) {
18 ftCo_800C6AFC(jobj);
19 }
20}
21
22static inline void fake_HSD_JObjSetRotationX(HSD_JObj* jobj, f32 x)
23{
24 HSD_ASSERT(639, jobj);
25 HSD_ASSERT(640, !(jobj->flags & JOBJ_USE_QUATERNION));
26 jobj->rotate.x = x;
27 if (!(jobj->flags & JOBJ_MTX_INDEP_SRT)) {
28 ftCo_800C6AFC(jobj);
29 }
30}
31
32static inline HSD_JObj* itGetDynamicBone(Item_GObj* igp, u32 bone_id)
33{
34 return GET_ITEM(igp)->xBBC_dynamicBoneTable->bones[bone_id];
35}
36
38 int anim_id, int flags)
39{
40 Item* ip = GET_ITEM(igp);
41 HSD_JObj* jobj = ip->xBBC_dynamicBoneTable->bones[0xB];
42 f32 x;
43 f32 y;
44
46 x = HSD_JObjGetRotationX(jobj);
47 Item_80268E5C((HSD_GObj*) igp, anim_id, flags);
48 HSD_JObjSetTranslateY(jobj, y);
49 HSD_JObjSetRotationX(jobj, x);
50}
51
52static inline void
54{
55 Item* ip = GET_ITEM(igp);
56 HSD_JObj* jobj = ip->xBBC_dynamicBoneTable->bones[0xB];
57 f32 x;
58 f32 y;
59
61 x = HSD_JObjGetRotationX(jobj);
62 Item_80268E5C((HSD_GObj*) igp, anim_id, flags);
65}
66
67static inline void inline1_UnkMotion0_Anim(Item_GObj* igp)
68{
69 Item* ip;
70
71 ip = GET_ITEM(igp);
72
73 if (ip->xDD4_itemVar.bombhei.xDD4 <= 0) {
74 it_8027E978(igp);
75 } else {
77 ip->xDD4_itemVar.bombhei.xDEC -= 1.0f;
78 }
79}
80
81static inline void inline2_UnkMotion0_Anim(Item_GObj* igp)
82{
83 Item* ip;
84 HSD_JObj* jobj;
85
86 ip = GET_ITEM(igp);
87 jobj = ip->xBBC_dynamicBoneTable->bones[0xB];
90}
91
92static inline void inline_UnkMotion8_Anim(Item_GObj* igp)
93{
94 if (it_80272C6C(igp) == 0) {
95 Item* ip = GET_ITEM(igp);
97
98 ip->xDC8_word.flags.x19 = 1;
99 ip->xDC8_word.flags.x17 = 1;
100
101 if (ip->xDD4_itemVar.bombhei.xDE0 == 0) {
102 ip->x5D0_animFrameSpeed = ap->x0;
104 } else {
105 ip->x5D0_animFrameSpeed = 1.0f;
107 }
108 }
109}
110
111#endif
#define HSD_ASSERT(line, cond)
Definition debug.h:19
void ftCo_800C6AFC(HSD_JObj *jobj)
Definition ft_0C31.c:278
#define GET_ITEM(gobj)
Definition inlines.h:8
bool it_80272C6C(HSD_GObj *)
Definition it_2725.c:5091
void it_8027E978(Item_GObj *arg0)
Definition itbombhei.c:236
static void inline1_UnkMotion0_Anim(Item_GObj *igp)
Definition itbombhei.static.h:67
static void fake_HSD_JObjSetTranslateY(HSD_JObj *jobj, f32 y)
Definition itbombhei.static.h:13
static void inline2_UnkMotion0_Anim(Item_GObj *igp)
Definition itbombhei.static.h:81
static void inline_UnkMotion8_Anim(Item_GObj *igp)
Definition itbombhei.static.h:92
static HSD_JObj * itGetDynamicBone(Item_GObj *igp, u32 bone_id)
Definition itbombhei.static.h:32
static void itBombhei_UpdateStatePreserveBone(Item_GObj *igp, int anim_id, int flags)
Definition itbombhei.static.h:37
static void fake_HSD_JObjSetRotationX(HSD_JObj *jobj, f32 x)
Definition itbombhei.static.h:22
static void itBombhei_UpdateStatePreserveBoneFake(Item_GObj *igp, int anim_id, int flags)
Definition itbombhei.static.h:53
void Item_80268E5C(HSD_GObj *gobj, enum_t msid, Item_StateChangeFlags flags)
Change item state.
Definition item.c:1167
static void HSD_JObjSetTranslateY(HSD_JObj *jobj, f32 y)
Definition jobj.h:407
#define JOBJ_MTX_INDEP_SRT
Definition jobj.h:90
static void HSD_JObjAddRotationX(HSD_JObj *jobj, float x)
Definition jobj.h:458
static void HSD_JObjAddTranslationY(HSD_JObj *jobj, float y)
Definition jobj.h:533
static void HSD_JObjSetRotationX(HSD_JObj *jobj, f32 x)
Definition jobj.h:272
#define JOBJ_USE_QUATERNION
Definition jobj.h:79
static f32 HSD_JObjGetRotationX(HSD_JObj *jobj)
Definition jobj.h:308
static f32 HSD_JObjGetTranslationY(HSD_JObj *jobj)
Definition jobj.h:446
@ ITEM_UNK_0x1
Definition forward.h:61
@ ITEM_ANIM_UPDATE
Updates item model with target Item State's AnimJoint, MatAnimJoint and extra HSD archive node if ava...
Definition forward.h:62
void * x4_specialAttributes
Definition types.h:182
HSD_JObj * bones[100]
Definition types.h:75
was using this to try and fix some matches, unsuccessfully
Definition gobj.h:26
Definition jobj.h:107
u32 flags
Definition jobj.h:112
Vec3 translate
Definition jobj.h:120
Quaternion rotate
Definition jobj.h:118
Definition types.h:200
union Item::Item_ItemVars xDD4_itemVar
Article * xC4_article_data
Definition types.h:271
f32 x5D0_animFrameSpeed
Definition types.h:301
DynamicBoneTable * xBBC_dynamicBoneTable
Definition types.h:337
flag32 xDC8_word
Definition types.h:518
struct flag32::@276 flags
u32 x19
Definition types.h:63
u32 x17
Definition types.h:62
Definition itCommonItems.h:91
float x0
Definition itCommonItems.h:92
float xDEC
Definition itCommonItems.h:80
float xDF8
Definition itCommonItems.h:83
float xDFC
Definition itCommonItems.h:84
s32 xDE0
Definition itCommonItems.h:77
s32 xDD4
Definition itCommonItems.h:74
itBombHei_ItemVars bombhei
Definition types.h:542