scene_user.h
Go to the documentation of this file.00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef NL_SCENE_USER_H
00025 #define NL_SCENE_USER_H
00026
00027 #include "nel/misc/types_nl.h"
00028 #include "nel/3d/u_scene.h"
00029 #include "nel/3d/driver_user.h"
00030 #include "nel/3d/landscape_user.h"
00031 #include "nel/3d/cloud_scape_user.h"
00032 #include "nel/3d/instance_group_user.h"
00033 #include "nel/3d/visual_collision_manager_user.h"
00034 #include "nel/3d/play_list_manager_user.h"
00035
00036
00037 namespace NL3D {
00038
00039
00040 class UWaterEnvMap;
00041
00048 class CSceneUser : public UScene
00049 {
00050 private:
00052 virtual void updateWaitingInstances();
00053 protected:
00055 CDriverUser *_DriverUser;
00057 CScene _Scene;
00058
00059
00060
00061 typedef CPtrSet<CLandscapeUser> TLandscapeSet;
00062 typedef CPtrSet<CCloudScapeUser> TCloudScapeSet;
00063 typedef CPtrSet<CInstanceGroupUser> TInstanceGroupSet;
00064 typedef CPtrSet<CVisualCollisionManagerUser> TVisualCollisionManagerSet;
00065 typedef CPtrSet<CPlayListManagerUser> TPlayListManagerSet;
00066 TLandscapeSet _Landscapes;
00067 TCloudScapeSet _CloudScapes;
00068 TInstanceGroupSet _InstanceGroups;
00069 TVisualCollisionManagerSet _VisualCollisionManagers;
00070 TPlayListManagerSet _PlayListManagers;
00071
00072 std::map<UInstance*,CTransformShape*> _WaitingInstances;
00073
00074
00075 struct CWaitingIG
00076 {
00077 UInstanceGroup *IGToLoad;
00078 UInstanceGroup **CallerPtr;
00079 NLMISC::CVector Pos;
00080 NLMISC::CQuat Rot;
00081 uint SelectedTexture;
00082 IAsyncLoadCallback *Callback;
00083 CWaitingIG(UInstanceGroup **callerPtr, const NLMISC::CVector &pos, const NLMISC::CQuat &rot, uint selectedTexture, IAsyncLoadCallback *pCB) : IGToLoad(NULL), CallerPtr(callerPtr), Pos(pos), Rot(rot), SelectedTexture(selectedTexture), Callback(pCB)
00084 {}
00085 };
00086
00087 typedef std::list<CWaitingIG> TWaitingIGList;
00088 TWaitingIGList _WaitingIGs;
00089 UWaterEnvMap *_WaterEnvMap;
00090
00091 public:
00092
00094
00095 CSceneUser(CDriverUser *drv, bool bSmallScene);
00096 virtual ~CSceneUser();
00097
00098
00099 public:
00100
00102
00103
00104 virtual void render(bool updateWaitingInstances = true, bool restoreMatrixContextAfterRender = true);
00105 virtual void beginPartRender();
00106 virtual void renderPart(TRenderPart rp);
00107 virtual void endPartRender(bool updateWaitingInstances = true, bool restoreMatrixContextAfterRender = true);
00108
00109
00110 virtual void updateWaitingInstances(double ellapsedTime);
00111 virtual void animate(TGlobalAnimationTime time);
00113
00114
00116
00117 virtual void setCam(UCamera cam);
00118 virtual UCamera getCam();
00119 virtual void setViewport(const class CViewport& viewport);
00120 virtual CViewport getViewport();
00121 virtual UInstanceGroup *findCameraClusterSystemFromRay(UInstanceGroup *startClusterSystem,
00122 const NLMISC::CVector &startPos, NLMISC::CVector &endPos);
00124
00125
00127
00128
00129 virtual UCamera createCamera();
00130 virtual void deleteCamera(UCamera &cam);
00131
00132 virtual UInstance createInstance(const std::string &shapeName);
00133 virtual void createInstanceAsync(const std::string &shapeName, UInstance *ppInstance, const NLMISC::CVector &position, uint selectedTexture);
00134 virtual void deleteInstance(UInstance &inst);
00135
00136 virtual void createInstanceGroupAndAddToSceneAsync (const std::string &instanceGroup, UInstanceGroup **pIG, const NLMISC::CVector &pos,
00137 const NLMISC::CQuat &rot, uint selectedTexture, IAsyncLoadCallback *pCB = NULL);
00138
00139 virtual void stopCreatingAndAddingIG(UInstanceGroup **pIG);
00140 virtual void deleteInstanceGroup(UInstanceGroup *pIG);
00141
00143 void updateWaitingIG();
00144
00145
00146 virtual UTransform createTransform();
00147 virtual void deleteTransform(UTransform &tr);
00148
00149 virtual USkeleton createSkeleton(const std::string &shapeName);
00150 virtual void deleteSkeleton(USkeleton &skel);
00151
00152 virtual ULandscape *createLandscape();
00153 virtual void deleteLandscape(ULandscape *land);
00154
00155 virtual UCloudScape *createCloudScape();
00156 virtual void deleteCloudScape(UCloudScape *cs);
00157
00158
00159
00160
00161
00162
00163 virtual void setToGlobalInstanceGroup(UInstanceGroup *pIG);
00164
00165 virtual UPointLight createPointLight();
00166 virtual void deletePointLight(UPointLight &light);
00167
00169
00171
00174 virtual void setAutomaticAnimationSet(UAnimationSet *as);
00176 virtual UPlayListManager *createPlayListManager() ;
00178 virtual void deletePlayListManager(UPlayListManager *playListManager) ;
00179
00180
00182
00183 virtual UVisualCollisionManager *createVisualCollisionManager();
00184 virtual void deleteVisualCollisionManager(UVisualCollisionManager *mgr);
00186
00187
00189
00190 virtual void setPolygonBalancingMode(TPolygonBalancingMode polBalMode);
00191 virtual TPolygonBalancingMode getPolygonBalancingMode() const;
00192
00193 virtual float getNbFaceAsked () const;
00194
00195 virtual void setGroupLoadMaxPolygon(const std::string &group, uint nFaces);
00196 virtual uint getGroupLoadMaxPolygon(const std::string &group);
00197 virtual float getGroupNbFaceAsked (const std::string &group) const;
00198
00199 virtual void setMaxSkeletonsInNotCLodForm(uint m);
00200 virtual uint getMaxSkeletonsInNotCLodForm() const;
00201
00203
00205
00206 virtual void setCoarseMeshManagerTexture (const char *sPath);
00207 virtual void setCoarseMeshLightingUpdate(uint8 period);
00208 virtual uint8 getCoarseMeshLightingUpdate() const;
00210
00212
00213 virtual void setLayersRenderingOrder(bool directOrder = true) { _Scene.setLayersRenderingOrder(directOrder); }
00214 virtual bool getLayersRenderingOrder() const { return _Scene.getLayersRenderingOrder(); }
00216
00218
00219
00220 virtual void enableLightingSystem(bool enable);
00221
00222 virtual void setAmbientGlobal(NLMISC::CRGBA ambient);
00223 virtual void setSunAmbient(NLMISC::CRGBA ambient);
00224 virtual void setSunDiffuse(NLMISC::CRGBA diffuse);
00225 virtual void setSunSpecular(NLMISC::CRGBA specular);
00226 virtual void setSunDirection(const NLMISC::CVector &direction);
00227 virtual void setLightGroupColor(uint lightmapGroup, NLMISC::CRGBA color);
00228
00229 virtual NLMISC::CRGBA getAmbientGlobal() const;
00230 virtual NLMISC::CRGBA getSunAmbient() const;
00231 virtual NLMISC::CRGBA getSunDiffuse() const;
00232 virtual NLMISC::CRGBA getSunSpecular() const;
00233 virtual NLMISC::CVector getSunDirection() const;
00234
00235 virtual void setMaxLightContribution(uint nlights);
00236 virtual uint getMaxLightContribution() const;
00237
00238 virtual void setLightTransitionThreshold(float lightTransitionThreshold);
00239 virtual float getLightTransitionThreshold() const;
00240
00242
00243
00245
00246
00247 virtual void setGlobalWindPower(float gwp);
00248 virtual float getGlobalWindPower() const;
00249 virtual void setGlobalWindDirection(const NLMISC::CVector &gwd);
00250 virtual const NLMISC::CVector &getGlobalWindDirection() const;
00251
00253
00254
00256
00257 virtual void resetCLodManager();
00258 virtual uint32 loadCLodShapeBank(const std::string &fileName);
00259 virtual void deleteCLodShapeBank(uint32 bankId);
00260 virtual sint32 getCLodShapeIdByName(const std::string &name) const;
00261 virtual sint32 getCLodAnimIdByName(uint32 shapeId, const std::string &name) const;
00263
00265
00266 virtual void enableElementRender(TRenderFilter elt, bool state);
00267 virtual void profileNextRender();
00268 virtual void getProfileResults(CBenchResults &results);
00269 virtual void profileQuadGridClipManager();
00270
00271
00273
00274 virtual uint getNumFlareContexts() const;
00275 virtual void setFlareContext(uint context);
00276 virtual uint getFlareContext() const;
00277
00278
00280
00281 virtual uint getShadowMapTextureSize() const;
00282 virtual void setShadowMapTextureSize(uint size);
00283 virtual uint getShadowMapBlurSize() const;
00284 virtual void setShadowMapBlurSize(uint bs);
00285 virtual void enableShadowPolySmooth(bool enable);
00286 virtual bool getEnableShadowPolySmooth() const;
00287 virtual void setShadowMapDistFadeStart(float dist);
00288 virtual float getShadowMapDistFadeStart() const;
00289 virtual void setShadowMapDistFadeEnd(float dist);
00290 virtual float getShadowMapDistFadeEnd() const;
00291 virtual void setShadowMapMaxCasterInScreen(uint num);
00292 virtual uint getShadowMapMaxCasterInScreen() const;
00293 virtual void setShadowMapMaxCasterAround(uint num);
00294 virtual uint getShadowMapMaxCasterAround() const;
00295 virtual void setVisualCollisionManagerForShadow(UVisualCollisionManager *vcm);
00296
00297
00298 void setWaterCallback(IWaterSurfaceAddedCallback *wcb);
00299 IWaterSurfaceAddedCallback *getWaterCallback() const;
00300
00301 void setLandscapePolyDrawingCallback(ILandscapePolyDrawingCallback *lpd);
00302 ILandscapePolyDrawingCallback *getLandscapePolyDrawingCallback() const;
00303
00304 virtual void setupTransparencySorting(uint8 maxPriority = 0, uint NbDistanceEntries = 1024);
00305
00307
00308 virtual void setWaterEnvMap(UWaterEnvMap *waterEnvMap);
00309 virtual UWaterEnvMap *getWaterEnvMap() const { return _WaterEnvMap; }
00310 virtual void updateWaterEnvMaps(TGlobalAnimationTime time);
00311
00312
00313 public:
00315
00316 CScene &getScene()
00317 {
00318 return _Scene;
00319 }
00320
00321
00322 };
00323
00324
00325 }
00326
00327
00328 #endif // NL_SCENE_USER_H
00329
00330