28 #ifndef __BspSceneManager_H__
29 #define __BspSceneManager_H__
151 bool onlyShadowCasters);
Representation of a ray in space, i.e.
A viewpoint from which the scene will be rendered.
static const String FACTORY_TYPE_NAME
Factory type name.
float Real
Software floating point type.
virtual RaySceneQueryResult & execute(void)
Executes the query, returning the results back in one list.
map< Material *, vector< StaticFaceGroup * >::type, materialLess >::type MaterialFaceGroupMap
RenderOperation mAABGeometry
bool fireRenderQueueEnded(uint8 id, const String &invocation)
Internal method for firing the queue end event, returns true if queue is to be repeated.
void initMetaData(void) const
Internal method to initialise the metadata, must be implemented.
void renderStaticGeometry(void)
Renders the static level geometry tagged in walkTree.
void setWorldGeometry(const String &filename)
Specialised from SceneManager to support Quake3 bsp files.
MovablesForRendering mMovablesForRendering
BspSceneManager(const String &name)
SceneNode * createSceneNodeImpl(void)
Creates a specialized BspSceneNode.
void showNodeBoxes(bool show)
Tells the manager whether to draw the axis-aligned boxes that surround nodes in the Bsp tree...
BSP specialisation of IntersectionSceneQuery.
Manages the organisation and rendering of a 'scene' i.e.
Comparator for material map, for sorting materials into render order (e.g.
ViewPoint getSuggestedViewpoint(bool random=false)
Specialised to suggest viewpoints.
SceneManager * createInstance(const String &instanceName)
Create a new instance of a SceneManager.
A 3D box aligned with the x/y/z axes.
FaceGroupSet mFaceGroupSet
virtual RaySceneQuery * createRayQuery(const Ray &ray, unsigned long mask=0xFFFFFFFF)
Creates an AxisAlignedBoxSceneQuery for this scene manager.
void processVisibleLeaf(BspNode *leaf, Camera *cam, VisibleObjectsBoundsInfo *visibleBounds, bool onlyShadowCasters)
Tags geometry in the leaf specified for later rendering.
Abstract class defining a movable object in a scene.
Class representing a node in the scene graph.
const BspLevelPtr & getLevel(void)
Specialisation of SharedPtr to allow SharedPtr to be assigned to BspLevelPtr.
set< const MovableObject * >::type MovablesForRendering
void clearTemporaries(void)
void _notifyObjectMoved(const MovableObject *mov, const Vector3 &pos)
Internal method for tagging BspNodes with objects which intersect them.
void addBoundingBox(const AxisAlignedBox &aab, bool visible)
Adds a bounding box to draw if turned on.
Default implementation of IntersectionSceneQuery.
static const Real POS_INFINITY
void _notifyObjectDetached(const MovableObject *mov)
Internal method for notifying the level that an object has been detached from a node.
RenderOperation mRenderOp
Specialisation of the SceneManager class to deal with indoor scenes based on a BSP tree...
Collects a group of static i.e.
~BspSceneManagerFactory()
Alternative listener class for dealing with RaySceneQuery.
bool processNode(const BspNode *node, const Ray &tracingRay, RaySceneQueryListener *listener, Real maxDistance=Math::POS_INFINITY, Real traceDistance=0.0f)
Internal processing of a single node.
Alternative listener class for dealing with IntersectionSceneQuery.
void freeMemory(void)
Frees up allocated memory for geometry caches.
void _findVisibleObjects(Camera *cam, VisibleObjectsBoundsInfo *visibleBounds, bool onlyShadowCasters)
Overriden from SceneManager.
virtual IntersectionSceneQueryResult & execute(void)
Executes the query, returning the results back in one list.
size_t estimateWorldGeometry(const String &filename)
Specialised from SceneManager to support Quake3 bsp files.
Standard 3-dimensional vector.
BspIntersectionSceneQuery(SceneManager *creator)
static const String BLANK
Constant blank string, useful for returning by ref where local does not exist.
Default implementation of RaySceneQuery.
'New' rendering operation using vertex buffers.
vector< SceneQuery::WorldFragment * >::type mSingleIntersections
list of the last single intersection world fragments (derived)
BSP specialisation of RaySceneQuery.
void destroyInstance(SceneManager *instance)
Destroy an instance of a SceneManager.
virtual IntersectionSceneQuery * createIntersectionQuery(unsigned long mask=0xFFFFFFFF)
Creates an IntersectionSceneQuery for this scene manager.
Structure for holding a position & orientation pair.
set< MovableObject * >::type mObjsThisQuery
Set for eliminating duplicates since objects can be in > 1 node.
const String & getTypeName(void) const
Retrieve the type name of this scene manager.
Factory for BspSceneManager.
set< int >::type FaceGroupSet
unsigned int cacheGeometry(unsigned int *pIndexes, const StaticFaceGroup *faceGroup)
Caches a face group for imminent rendering.
BspNode * walkTree(Camera *camera, VisibleObjectsBoundsInfo *visibleBounds, bool onlyShadowCasters)
Walks the BSP tree looking for the node which the camera is in, and tags any geometry which is in a v...
Separate SceneQuery class to query for pairs of objects which are possibly intersecting one another...
MaterialFaceGroupMap mMatFaceGroupMap
void clearScene(void)
Empties the entire scene, inluding all SceneNodes, Entities, Lights, BillboardSets etc...
BspRaySceneQuery(SceneManager *creator)
bool processLeaf(const BspNode *node, const Ray &tracingRay, RaySceneQueryListener *listener, Real maxDistance=Math::POS_INFINITY, Real traceDistance=0.0f)
Internal processing of a single leaf.
Structure collecting together information about the visible objects that have been discovered in a sc...
Specialises the SceneQuery class for querying along a ray.
Encapsulates a node in a BSP tree.
Class which will create instances of a given SceneManager.