37 #ifndef PCZ_SCENEMANAGER_H
38 #define PCZ_SCENEMANAGER_H
55 class PCZIntersectionSceneQuery;
56 class PCZRaySceneQuery;
57 class PCZSphereSceneQuery;
58 class PCZAxisAlignedBoxSceneQuery;
59 class PCZPlaneBoundedVolumeListSceneQuery;
82 const String& getTypeName(
void)
const;
86 void init(
const String &defaultZoneTypeName,
87 const String &filename =
"none");
95 void destroyPortal(
Portal * p);
99 void destroyPortal(
const String & portalName);
108 void destroyAntiPortal(
const String& portalName);
119 virtual void setZoneGeometry(
const String & zoneName,
124 virtual SceneNode* createSceneNodeImpl(
void);
128 virtual SceneNode * createSceneNode (
void );
135 virtual void destroySceneNode(
const String &name );
138 virtual void destroySceneNode(
SceneNode* sn);
142 virtual void clearScene(
void);
145 void setWorldGeometryRenderQueue(
uint8 qid);
148 void _renderScene(
Camera *cam,
Viewport *vp,
bool includeOverlays);
151 void enableSky(
bool);
154 void setSkyZone(
PCZone * zone);
157 virtual void _updateSceneGraph(
Camera * cam );
160 virtual void _findVisibleObjects (
Camera * cam,
167 virtual void _alertVisibleObjects(
void );
188 virtual bool hasLight(
const String& name)
const;
194 virtual void destroyLight(
const String& name);
198 virtual void destroyAllLights(
void);
204 void _updatePortalZoneData(
void);
207 void _dirtyNodeByMovingPortals(
void);
211 void _updatePCZSceneNodes(
void);
215 void _calcZonesAffectedByLights(
Camera * cam);
220 void connectPortalsToTargetZonesByLocation(
void);
239 void destroyZone(
PCZone* zone,
bool destroySceneNodes);
252 void createZoneSpecificNodeData(
PCZone *);
268 void findNodesIn(
const Sphere &sphere,
285 void findNodesIn(
const Ray &ray,
311 virtual bool setOption(
const String &,
const void * );
316 virtual bool getOption(
const String &,
void * );
333 void _clearAllZonesPortalUpdateFlag(
void);
381 virtual void findLightsAffectingFrustum(
const Camera* camera);
383 virtual void ensureShadowTexturesCreated();
385 virtual void destroyShadowTextures(
void);
387 virtual void fireShadowTexturesPreCaster(
Light* light,
Camera* camera,
size_t iteration);
vector< SceneNode * >::type NodeList
~PCZSceneManagerFactory()
Representation of a ray in space, i.e.
PortalList mPortals
Master list of Portals in the world (includes all portals)
Factory for PCZSceneManager.
A viewpoint from which the scene will be rendered.
AntiPortal datastructure for occlusion culling.
set< PCZSceneNode * >::type PCZSceneNodeList
std::vector< SceneNode *, A > type
Camera * mLastActiveCamera
Camera of last _findVisibleObjects()
ZoneIterator getZoneIterator(void)
PCZoneFactoryManager * mZoneFactoryManager
ZoneFactoryManager instance.
NodeList mVisible
List of visible nodes since last _findVisibleObjects()
Manages the organisation and rendering of a 'scene' i.e.
void setShowPortals(bool b)
Sets the portal visibility flag.
Specialises the SceneQuery class for querying within a sphere.
A 3D box aligned with the x/y/z axes.
std::list< WireBoundingBox *, A > type
unsigned long mFrameCount
Frame counter used in visibility determination.
PCZ implementation of AxisAlignedBoxSceneQuery.
Class representing a node in the scene graph.
static const String FACTORY_TYPE_NAME
Factory type name.
PCZone * getDefaultZone(void)
Get the default zone.
Concrete IteratorWrapper for nonconst access to the underlying key-value container.
vector< PlaneBoundedVolume >::type PlaneBoundedVolumeList
PCZ implementation of RaySceneQuery.
Portal datastructure for connecting zones.
bool mShowPortals
Portals visibility flag.
Representation of a dynamic light source in the scene.
PCZ implementation of IntersectionSceneQuery.
String mDefaultZoneFileName
Name of data file for default zone.
PCZ implementation of SphereSceneQuery.
PCZone * mDefaultZone
The root PCZone;.
void initMetaData(void) const
Internal method to initialise the metadata, must be implemented.
A sphere primitive, mostly used for bounds checking.
PCZone * mActiveCameraZone
The zone of the active camera (for shadow texture casting use);.
#define _OgrePCZPluginExport
list< WireBoundingBox * >::type BoxList
AntiPortalList mAntiPortals
Master list of AntiPortals in the world.
vector< String >::type StringVector
String mDefaultZoneTypeName
Type of default zone to be used.
Standard 3-dimensional vector.
SceneManager * createInstance(const String &instanceName)
Create a new instance of a SceneManager.
Represents a convex volume bounded by planes.
list< Portal * >::type PortalList
An abstraction of a viewport, i.e.
PCZ implementation of PlaneBoundedVolumeListSceneQuery.
list< AntiPortal * >::type AntiPortalList
ZoneMap mZones
The list of all PCZones.
MapIterator< ZoneMap > ZoneIterator
ZoneMap iterator for read-only access to the zonemap.
Specialises the SceneQuery class for querying within an axis aligned box.
Specialises the SceneQuery class for querying within a plane-bounded volume.
Portal-Connected Zone datastructure for managing scene nodes.
Separate SceneQuery class to query for pairs of objects which are possibly intersecting one another...
void destroyInstance(SceneManager *instance)
Destroy an instance of a SceneManager.
Structure collecting together information about the visible objects that have been discovered in a sc...
Specialises the SceneQuery class for querying along a ray.
map< String, PCZone * >::type ZoneMap
Specialized SceneManager that uses Portal-Connected-Zones to divide the scene spatially.
Class which will create instances of a given SceneManager.