Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions src/SB/Game/zEnt.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ struct zEnt : xEnt

void checkpoint_collision_hack(zEnt* ent);
char* zParamGetString(xModelAssetParam* param, U32 size, char* tok, char* def);
S32 zParamGetFloatList(xModelAssetParam* param, U32 size, const char* tok, S32 count,
F32* def, F32* result);
S32 zParamGetFloatList(xModelAssetParam* param, U32 size, const char* tok, S32 count, F32* def,
F32* result);
void zEntGetShadowParams(xEnt* ent, xVec3* center, F32* radius, xEntShadow::radius_enum rtype);
S32 zParamGetVector(xModelAssetParam* param, U32 size, const char* tok, xVec3 result, xVec3*);
S32 zParamGetVector(xModelAssetParam* param, U32 size, char* tok, xVec3 result, xVec3*);
S32 zParamGetFloatList(xModelAssetParam* param, U32 size, char* tok, S32 count, F32* def,
F32* result);
F32* result);
S32 zParamGetFloatList(xModelAssetParam* param, U32 size, char* tok, S32 count, F32* def,
F32* result);
F32* result);
F32 zParamGetFloat(xModelAssetParam* param, U32 size, const char* tok, F32 def);
F32 zParamGetFloat(xModelAssetParam* param, U32 size, char* tok, F32 def);
S32 zParamGetInt(xModelAssetParam* param, U32 size, const char* tok, S32 def);
Expand All @@ -57,7 +57,7 @@ void zEntInit(zEnt* ent, xEntAsset* asset, U32 type);
// TODO: Misplaced Inlines/Weak functions
WEAK void xModelAnimCollStop(xModelInstance& m);
WEAK xMat4x3* xEntGetFrame(const xEnt* ent);
WEAK void xSndPlay3D(U32 id, F32 vol, F32 pitch, U32 priority, U32 flags,
const xVec3* pos, F32 radius, sound_category category, F32 delay);
WEAK void xSndPlay3D(U32 id, F32 vol, F32 pitch, U32 priority, U32 flags, const xVec3* pos,
F32 radius, sound_category category, F32 delay);

#endif
126 changes: 123 additions & 3 deletions src/SB/Game/zEntHangable.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,125 @@
#include "xMath3.h"
#include "xVec3.h"
#include "xBase.h"
#include "xEnt.h"
#include "xLinkAsset.h"
#include "xString.h"
#include "zParEmitter.h"
#include <types.h>

#include "zEntHangable.h"

#include <types.h>
static zParEmitter* sCandleEmitter;
static zParEmitter* sCandleSmokeEmitter;
static U32 sChandelierHash;
static zParEmitter* sMountEmitter;

void zEntHangable_SetupFX()
{
sCandleEmitter = zParEmitterFind("PAREMIT_CHAND_CANDLE");
sCandleSmokeEmitter = zParEmitterFind("PAREMIT_CHAND_CANDLE_SMOKE");
sChandelierHash = xStrHash("rlii0006");
sMountEmitter = zParEmitterFind("PAREMIT_HANGABLE_MOUNT");
}

static void HangableSetup(zEntHangable* ent, xEntAsset* asset)
{
xEntHangableAsset* hangAsset;
xVec3* center;
xMat3x3 hackMat;
}

void zEntHangable_Init(void* a, void* b)
{
zEntHangable_Init((zEntHangable*)a, (xEntAsset*)b);
}

void zEntHangable_Init(zEntHangable* ent, xEntAsset* asset)
{
zEntInit(ent, asset, 'HANG');

if (ent->linkCount)
{
// TODO: Not quite correct
ent->link = (xLinkAsset*)(ent->asset + 1);
}
else
{
ent->link = NULL;
}

HangableSetup(ent, asset);
}

static void zEntHangable_UpdateFX(zEntHangable* ent)
{
xVec3 offset_rlii0006[8];
xVec3* local_offset;
xParEmitterCustomSettings info;
zParEmitter* emitter;
S32 i;
}

void zEntHangable_Update(zEntHangable* ent, xScene*, F32 dt)
{
xVec3 unitHang;
}

static void zEntHangableMountFX(zEntHangable*)
{
}

S32 zEntHangableEventCB(xBase* from, xBase* to, U32 toEvent, const F32* toParam, xBase*)
{
zEntHangable* ent; // r20
zEnt* follow; // r2
// FloatAndVoid dist; // r29+0x20C
return 0;
}

static bool HangableIsMovingTooMuch(xVec3* a, xVec3* b, xVec3* c, xVec3* d)
{
return false;
}

void zEntHangable_SetMatrix(zEntHangable* ent, F32 f)
{
}

void zEntHangable_Save(zEntHangable* ent, xSerial* s)
{
zEntSave(ent, s);
}

void zEntHangable_Load(zEntHangable* ent, xSerial* s)
{
zEntLoad(ent, s);
}

void zEntHangable_Reset(zEntHangable* ent)
{
zEntHangable_SetShaggy(ent, NULL);
zEntHangable_SetFollow(ent, NULL);
xEntReset(ent);
HangableSetup(ent, ent->asset);
}

void zEntHangable_SetShaggy(zEntHangable* ent, zEnt* b)
{
}

void zEntHangable_FollowUpdate(zEntHangable* ent)
{
xVec3* center;
}

void zEntHangable_SetFollow(zEntHangable* ent, zEnt* b)
{
if (b)
{
ent->follow = b;
zEntHangable_FollowUpdate(ent);
}
else if (ent->follow)
{
ent->follow = NULL;
}
}
3 changes: 3 additions & 0 deletions src/SB/Game/zEntHangable.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,11 @@ struct zEntHangable : zEnt

void zEntHangable_SetupFX();
void zEntHangable_Init(void* ent, void* asset);
void zEntHangable_Init(zEntHangable*, xEntAsset*);
void zEntHangable_Save(zEntHangable* ent, xSerial* s);
void zEntHangable_Load(zEntHangable* ent, xSerial* s);
void zEntHangable_Reset(zEntHangable* ent);
void zEntHangable_SetShaggy(zEntHangable* ent, zEnt* b);
void zEntHangable_SetFollow(zEntHangable* ent, zEnt* b);

#endif
Loading