From c733fbc98cc5c20bbf75ff439d0c7cc216f30b99 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Tue, 27 Oct 2026 20:17:56 +0000 Subject: [PATCH] Decompile 5 functions in Source/Contents/Models/ModelActor.cpp, Source/Contents/Models/ModelActor.h Batch #1137 by eAthena: 5 byte-identical, 0 confirmed by peer review. - fn_17478 C3dActor::Assign: byte-identical - fn_17488 C3dActor::Find: byte-identical - fn_17492 C3dActor::Update: byte-identical - fn_17503 C3dActor::Animate: byte-identical - fn_17511 C3dActor::UpdateBounds: byte-identical Merged automatically: every function is byte-identical to the original. --- Source/Contents/Models/ModelActor.cpp | 38 +++++++++++++++++++++++++-- Source/Contents/Models/ModelActor.h | 14 +++++----- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/Source/Contents/Models/ModelActor.cpp b/Source/Contents/Models/ModelActor.cpp index 4a56ac7..37b089b 100644 --- a/Source/Contents/Models/ModelActor.cpp +++ b/Source/Contents/Models/ModelActor.cpp @@ -33,8 +33,10 @@ C3dActorV1::C3dActorV1() : root(nullptr), frame(0), animationLength(0), lastTick // INLINED C3dActorV1::~C3dActorV1() { - delete this->root; - this->root = nullptr; + if (this->root) { + delete this->root; + this->root = nullptr; + } } // OFFSET: 0x00AB5C30 @@ -48,6 +50,13 @@ C3dActorV2::~C3dActorV2() { delete root; root = nullptr; } + + this->roots.clear(); +} + +// OFFSET: 0x00AB6E80 +// FUNCTION: fn_17478 +void C3dActor::Assign(const C3dModelRes&) { } // OFFSET: 0x00AB6E90 @@ -110,6 +119,13 @@ void C3dActorV2::UpdateTransform() { this->dirty = 0; } +// OFFSET: 0x00AB9650 +// FUNCTION: fn_17511 +void C3dActor::UpdateBounds() { +} + +// OFFSET: 0x00ABBA50 + // OFFSET: 0x00ABBA60 // FUNCTION: fn_17519 void C3dActorV1::Prepare(ModelLightingContext& context) { @@ -154,6 +170,11 @@ void C3dActorV2::Prepare(ModelLightingContext& context) { context.shade = previousShade; } +// OFFSET: 0x00AB9060 +// FUNCTION: fn_17503 +void C3dActor::Animate(double) { +} + // OFFSET: 0x00AB9070 // FUNCTION: fn_17504 void C3dActorV1::Animate(double frame) { @@ -189,6 +210,12 @@ void C3dActorV2::SetSpeed(float speed) { this->speed = speed; } +// OFFSET: 0x00AB7850 +// FUNCTION: fn_17488 +C3dNode* C3dActor::Find(const char*) { + return nullptr; +} + // OFFSET: 0x00AB7860 // FUNCTION: fn_17489 C3dNode* C3dActorV1::Find(const char* name) { @@ -239,6 +266,13 @@ void C3dActor::Fade() { } } +// OFFSET: 0x00AB7920 +// FUNCTION: fn_17492 +void C3dActor::Update() { +} + +// OFFSET: 0x00AB7B40 + // OFFSET: 0x00AB7B50 // FUNCTION: fn_17496 void C3dActorV1::Draw(const float* matrix, bool clip, ModelRenderContext& context) { diff --git a/Source/Contents/Models/ModelActor.h b/Source/Contents/Models/ModelActor.h index 85c485f..f17269b 100644 --- a/Source/Contents/Models/ModelActor.h +++ b/Source/Contents/Models/ModelActor.h @@ -11,14 +11,14 @@ public: C3dActor(const C3dActor&) = delete; C3dActor& operator=(const C3dActor&) = delete; - virtual void Assign(const C3dModelRes& resource) = 0; + virtual void Assign(const C3dModelRes& resource); virtual void UpdateTransform(); - virtual void UpdateBounds() = 0; - virtual void Prepare(ModelLightingContext& context) = 0; - virtual void Animate(double frame) = 0; - virtual void Update() = 0; - virtual void Draw(const float* matrix, bool clip, ModelRenderContext& context) = 0; - virtual C3dNode* Find(const char* name) = 0; + virtual void UpdateBounds(); + virtual void Prepare(ModelLightingContext& context); + virtual void Animate(double frame); + virtual void Update(); + virtual void Draw(const float* matrix, bool clip, ModelRenderContext& context); + virtual C3dNode* Find(const char* name); virtual void MarkOccluded(const float* ray); virtual void SetSpeed(float speed); void CopyVolumes(const std::list& source);