166 VolumeStruct(
int i0,
int j0,
int k0,
int i1,
int j1,
int k1);
209#define GRIDCULL_NODE_ACCEPTED Stats.NodesAccepted ++;
210#define GRIDCULL_NODE_TRIVIALLY_ACCEPTED Stats.NodesTriviallyAccepted ++;
211#define GRIDCULL_NODE_REJECTED Stats.NodesRejected ++;
215#define GRIDCULL_NODE_ACCEPTED
216#define GRIDCULL_NODE_TRIVIALLY_ACCEPTED
217#define GRIDCULL_NODE_REJECTED
332 if ( (set_i >= 0) && (set_j >= 0) && (set_k >= 0) &&
419 WWASSERT((i >= 0) && (j >= 0) && (k >= 0));
466 set_box->
Init(center,extent);
692 delta[0] =
Max[0] -
Min[0];
693 delta[1] =
Max[1] -
Min[1];
694 delta[2] =
Max[2] -
Min[2];
696 if (delta[1] > delta[split_axis]) split_axis = 1;
697 if (delta[2] > delta[split_axis]) split_axis = 2;
705 v0.
Max[split_axis] = v1.
Min[split_axis] =
Min[split_axis] + (delta[split_axis] >> 1);
WWINLINE void Init(const Vector3 ¢er, const Vector3 &extent)
WWINLINE CullLinkClass(CullSystemClass *system)
CullableClass * Get_Next_Collected_Object_Internal(CullableClass *obj)
CullableClass * Get_First_Collected_Object_Internal(void)
friend class CullableClass
const Vector3 & Get_Bound_Min(void) const
const Vector3 & Get_Bound_Max(void) const
void unlink_object_from_list(CullableClass **head, CullableClass *obj)
void compute_box(int i, int j, int k, AABoxClass *set_box)
void Reset_Statistics(void)
void link_object_to_list(CullableClass **head, CullableClass *obj)
void link_object(CullableClass *obj)
bool map_point_to_address(const Vector3 &pt, int &set_address)
void Add_Object_Internal(CullableClass *obj)
CullableClass * NoGridList
void Collect_And_Unlink_All(void)
void collect_objects_in_leaf(const Vector3 &point, CullableClass *head)
void clamp_indices_to_grid(int *i, int *j, int *k)
void Set_Termination_Count(int count)
virtual void Save(ChunkSaveClass &csave)
void Remove_Object_Internal(CullableClass *obj)
const StatsStruct & Get_Statistics(void)
int total_cell_count(void)
void init_volume(const Vector3 &bound_min, const Vector3 &bound_max, VolumeStruct *set_volume)
void unlink_object(CullableClass *obj)
virtual void Load(ChunkLoadClass &cload)
void init_volume(const Vector3 &point, VolumeStruct *set_volume)
virtual void Collect_Objects(const Vector3 &point)
WWINLINE int map_indices_to_address(int i, int j, int k)
virtual void Re_Partition(const Vector3 &min, const Vector3 &max, float objdim)
void Set_Min_Cell_Size(const Vector3 &size)
~GridCullSystemClass(void)
void Get_Min_Cell_Size(Vector3 &size) const
int Get_Termination_Count(void) const
virtual void Update_Culling(CullableClass *obj)
virtual int Get_Object_Count(void) const
GridCullSystemClass(void)
bool map_point_to_cell(const Vector3 &pt, int &set_i, int &set_j, int &set_k)
virtual ~GridLinkClass(void)
GridLinkClass(GridCullSystemClass *system)
GridListIterator(CullableClass *head)
CullableClass * Get_Obj(void)
void First(CullableClass *head)
CullableClass * Peek_Obj(void)
const Vector3 & Get_P1() const
const Vector3 & Get_P0() const
void Compute_Axis_Aligned_Extent(Vector3 *set_extent) const
virtual void Add_Object(T *obj)
T * Get_Next_Collected_Object(T *obj)
virtual void Remove_Object(T *obj)
T * Get_First_Collected_Object(void)
static float Max(float a, float b)
static float Min(float a, float b)
int NodesTriviallyAccepted
bool Is_Empty(void) const
void Split(VolumeStruct &v0, VolumeStruct &v1) const