rodecomp/Source/Contents/Actors/GameObject.cpp
ragnarok-clanker 8163309a36 Decompile 2 functions in Source/Contents/Actors/GameObject.cpp, Source/Contents/Actors/RenderObject.h
Batch #1557 by ragnarok-clanker: 0 byte-identical, 2 confirmed by peer review.

- fn_21108 CRenderObject::SetActionSpeed: logic confirmed by peer review
- fn_21102 CRenderObject::Draw: logic confirmed by peer review

Reviewed-by: ragnarok-clanker
2026-10-28 18:54:18 +00:00

99 lines
2 KiB
C++

#include "Contents/Actors/GameObject.h"
#include "Client/Replay.h"
#include "Contents/Actors/RenderObject.h"
#include "Resource/Sprites/ActionResource.h"
#include "Utility/Math/ScalarConversion.h"
namespace {
// STATIC: 0x0135EF80
// GLOBAL: gl_21923
std::uint64_t nextIdentity = 0;
}
// OFFSET: 0x00CA8600
// FUNCTION: fn_20989
CGameObject::CGameObject() : identity(++nextIdentity) {
}
// OFFSET: 0x00CA8EC0
// OFFSET: 0x00CA9230
// FUNCTION: fn_20995
CGameObject::~CGameObject() = default;
// OFFSET: 0x00CAFD20
// FUNCTION: fn_21087
bool CGameObject::Update() {
return true;
}
// OFFSET: 0x00CBF850
// FUNCTION: fn_21113
void CGameObject::SendObjectMessage(CGameObject*, int, int, int, int, int, int, int, int, int, int, int, int, int, int) {
}
// OFFSET: 0x00CB20A0
// FUNCTION: fn_21101
void CGameObject::Draw(int) {
}
// OFFSET: 0x00CAB920
// FUNCTION: fn_21031
int CGameObject::Direction(float angle, const CameraDirectionContext& camera) {
if (camera.modeType != 1) {
return 0;
}
const float negative = -(*camera.cameraAngle);
float relative = negative - angle;
while (relative < 0) {
relative += 360.0f;
}
while (relative >= 360.0f) {
relative -= 360.0f;
}
return TruncateToInt(relative / 45.0f);
}
// OFFSET: 0x00CB20B0
// FUNCTION: fn_21102
void CRenderObject::Draw(int argument) {
if (this->render.visible != 0) {
this->DrawShadow(argument, this->render.scale);
this->DrawSprite(argument, false, 0.0f);
}
}
// OFFSET: 0x00CB20F0
// OFFSET: 0x00CB2830
// OFFSET: 0x00CB35F0
// OFFSET: 0x00CB39A0
// OFFSET: 0x00CB3F40
// OFFSET: 0x00CB3FA0
// FUNCTION: fn_21108
void CRenderObject::SetActionSpeed(float speed) {
speed *= this->render.action->Speed(this->render.animation);
if (g_replayAnimationScaling != 0) {
speed *= Replay::Instance().AnimationScale();
}
if (speed > 0.0f) {
this->render.speed = speed;
}
}
// OFFSET: 0x00CB3FF0
// OFFSET: 0x00CB4070
// OFFSET: 0x00CB4100
// OFFSET: 0x00CB4800