first commit

This commit is contained in:
2026-06-22 11:49:35 +02:00
commit d805f2ba86
619 changed files with 126873 additions and 0 deletions

View File

@ -0,0 +1,74 @@
/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#ifndef __OCTREE_RENDERABLE__
#define __OCTREE_RENDERABLE__
#include "core/renderable.h"
#include "container/narray_list.h"
namespace GS {
namespace Core {
/*
@short Octree for static renderable.
@author Emmanuel Julien (ejulien@nworks.fr)
*/
class OctreeCullingSystem : public Renderable
{
public:
struct CachedNode
{
Renderable *renderable;
MinMax minmax;
CachedNode() : renderable(0) {}
};
struct Node
{
Array <CachedNode *> cached_node;
MinMax minmax;
AutoPtr <Node> child[2];
};
private:
bool dirty;
Array <CachedNode> nodes;
AutoPtr <Node> root;
ArrayList <Renderable *> renderable_list;
/// Perform list insertion into the octree.
Node *InsertList(List <CachedNode *> &list);
void GetNodeRenderablePrimitive(Node *, const Camera &view, const Camera &default_view, Stack <Render::Primitive *> &, Context);
void CullNodeRenderablePrimitive(Node *, const Camera &view, const Camera &default_view, Stack <Render::Primitive *> &, Context);
public:
void AddRenderable(Renderable *);
void DeleteRenderable(Renderable *);
bool Update();
/// Compute renderable min-max.
virtual void ComputeRenderableMinMax(MinMax &);
/// Get primitive list.
virtual uint GetRenderablePrimitiveList(const Camera &view, const Camera &default_view, Stack <Render::Primitive *> &list, Context context = Context_Default, bool cull = true);
OctreeCullingSystem() : dirty(true) {}
};
} // Core
} // GS
#endif // __OCTREE_RENDERABLE__