rodecomp/Source/Contents/World/WorldSpatialTree.h
ragnarok-clanker 4d9d775cc8 Decompile 3 functions in Source/Contents/World/WorldSpatialTree.cpp, Source/Contents/World/WorldSpatialTree.h, ...
Batch #995 by ragnarok-clanker: 0 byte-identical, 3 confirmed by peer review.

- fn_17651 WorldScene::WorldScene: logic confirmed by peer review
- fn_17654 WorldScene::~WorldScene: logic confirmed by peer review
- fn_17704 WorldSpatialTree::RefreshModelBounds: logic confirmed by peer review

Reviewed-by: ragnarok-clanker
2026-10-27 08:51:12 +00:00

47 lines
1.4 KiB
C++

#ifndef RAGNAROK_SOURCE_CONTENTS_WORLD_WORLDSPATIALTREE_H
#define RAGNAROK_SOURCE_CONTENTS_WORLD_WORLDSPATIALTREE_H
#include <cstdint>
#include <vector>
struct ResourceByteReader;
class C3dAttr;
struct GroundSpatial;
class C3dActor;
struct WorldSpatialTree {
WorldSpatialTree();
~WorldSpatialTree();
WorldSpatialTree(const WorldSpatialTree&) = delete;
WorldSpatialTree& operator=(const WorldSpatialTree&) = delete;
void Subdivide(int depth);
void ReadBounds(ResourceByteReader& input, int depth);
void ClearChildren();
void BindTerrain(C3dAttr& resource, int depth);
void BindGround(GroundSpatial& resource, int depth);
void CopyBounds(int depth, const WorldSpatialTree& source);
void RefreshBounds(int depth);
void RefreshModelBounds(int depth);
void InsertModel(C3dActor& model, int depth);
void RemoveModel(C3dActor* model, int depth);
std::vector<C3dActor*>& ModelsAt(float x, float z, int depth);
/* 0000 */ WorldSpatialTree* parent;
/* 0004 */ WorldSpatialTree* children[4];
/* 0014 */ float minimum[3];
/* 0020 */ float maximum[3];
/* 002C */ float center[3];
/* 0038 */ float halfSize[3];
/* 0044 */ int dirty;
/* 0048 */ std::vector<C3dActor*> objects;
/* 0054 */ GroundSpatial* ground;
/* 0058 */ int groundCells[4];
/* 0068 */ C3dAttr* terrain;
/* 006C */ int terrainCells[4];
};
#if defined(_WIN32) && !defined(_WIN64)
static_assert(sizeof(WorldSpatialTree) == 124);
#endif
#endif