28#ifndef HPL_PORTAL_CONTAINER_H
29#define HPL_PORTAL_CONTAINER_H
31#include "common/list.h"
32#include "hpl1/engine/graphics/Renderable.h"
33#include "hpl1/engine/math/BoundingVolume.h"
34#include "hpl1/engine/scene/RenderableContainer.h"
35#include "common/stablemap.h"
36#include "hpl1/std/set.h"
41class cSectorVisibilityContainer;
47typedef Hpl1::Std::set<iRenderable *>::iterator tRenderableSetIt;
50typedef Hpl1::Std::set<iEntity3D *>::iterator tEntity3DSetIt;
54class cPortalContainer;
80 tEntity3DSetIt mEntityIt;
81 tSectorMapIt mSectorIt;
96 void OnTransformUpdate(
iEntity3D *apEntity);
108 void OnTransformUpdate(
iEntity3D *apEntity);
132 void SetTargetSector(
tString asSectorId);
137 void AddPortalId(
int alId);
138 void SetNormal(
const cVector3f &avNormal);
140 void SetTransform(
const cMatrixf &a_mtxTrans);
144 bool IsVisible(
cFrustum *apFrustum);
150 cVector3f GetNormal() {
return mvNormal; }
151 int GetId() {
return mlId; }
152 cPlanef &GetPlane() {
return mPlane; }
154 bool GetActive() {
return mbActive; }
155 void SetActive(
bool abX) { mbActive = abX; }
169 bool mbPortalsNeedUpdate;
189 bool TryToAdd(
iRenderable *apObject,
bool abStatic);
190 bool TryToAddEntity(
iEntity3D *apEntity);
192 void AddPortal(
cPortal *apPortal);
201 void SetAmbientColor(
const cColor &aAmbient) { mAmbient = aAmbient; }
202 const cColor &GetAmbientColor() {
return mAmbient; }
206 tPortalList *GetPortalList() {
return &mlstPortals; }
207 tString &GetId() {
return msId; }
271 int GetSectorVisitCount()
const {
return mlSectorVisitCount; }
280 tSectorMap *GetSectorMap() {
return &m_mapSectors; }
281 tStringList *GetVisibleSectorsList() {
return &mlstVisibleSectors; }
283 tRenderableSet *GetGlobalDynamicObjectSet() {
return &m_setGlobalDynamicObjects; }
284 tRenderableList *GetGlobalStaticObjectList() {
return &mlstGlobalStaticObjects; }
287 void ComputeSectorVisibilty(cSectorVisibilityContainer *apContainer);
289 tSectorMap m_mapSectors;
291 int mlSectorVisitCount;
293 cPortalContainerCallback *mpEntityCallback;
294 cPortalContainerEntityCallback *mpNormalEntityCallback;
297 tRenderableSet m_setGlobalDynamicObjects;
299 tRenderableList mlstGlobalStaticObjects;
302 tEntity3DSet m_setGlobalEntities;
304 tStringList mlstVisibleSectors;
306 int mlEntityIterateCount;
typename TreeT::BasicIterator iterator
Definition: stablemap.h:48
Definition: BoundingVolume.h:71
Definition: PortalContainer.h:92
Definition: PortalContainer.h:104
Definition: PortalContainer.h:64
Definition: PortalContainer.h:229
bool AddToSector(iRenderable *apRenderable, tString asSector)
void GetVisible(cFrustum *apFrustum, cRenderList *apRenderList)
void AddSector(tString asSectorId)
bool Add(iRenderable *apRenderable, bool abStatic)
bool Remove(iRenderable *apRenderable)
Definition: PortalContainer.h:125
Definition: RenderList.h:145
Definition: PortalContainer.h:181
Definition: SectorVisibility.h:136
Definition: Entity3D.h:81
Definition: Entity3D.h:44
Definition: Light3D.h:117
Definition: Entity3D.h:57
Definition: RenderableContainer.h:41
Definition: Renderable.h:70
Definition: list_intern.h:54