DXGfxLib.OutDoorScene Class Reference

This is the main reason why this small library exist. I wanted to be able to display an outdoor scene with terrain without throwing everything I would have in that scene to the video card for each render pass. OutDoorScene inherits from the Scene class it does refine the algorithms for scene graph organisation upadte and draw using the asumption that the is a classical outdoor scene featuring a large terrain. Internally this class uses a quadtree. Some optimization impose that the depth of the quadtree has to be lower than 8. As it might be performance unfriendly to have a too deep tree I use a 4 level deep quadtree. This could be easily changed if needed. More...

Inherits DXGfxLib::Scene, DXGfxLib::IPositionConstraint, DXGfxLib::Scene, and DXGfxLib::IPositionConstraint.

Collaboration diagram for DXGfxLib.OutDoorScene:

Collaboration graph
[legend]

List of all members.

Classes

struct  BatchInterm

Public Member Functions

 OutDoorScene (AABBox worldBBox, int depth)
 The constructor of our QuadTree. You can specify a bounding box for the world that the QuadTree will encompass and the depth of the QuadTree that you want to use. By Default it's 4.
void Initialize (AABBox worldBBox, int depth)
override void GetPrepared ()
 Call this if you know you have your objects in scene content but that the node are not attached to the scene graph yet!! For example this is called just after deserializing a whole scene.
override void Dispose ()
 Here we should dispose everything related to our scene !!
void ValidateOrMove (ref SceneNode node)
 The outdoorscene can impose constraints on node positionning. For example most of the time we want the nodes to be above ground level. We do that here. For each node we consider 0,0,0 in local space is at the center of the node bounding box so the size of the node bounding box halved by two is used for the repositionning operation. This position constraint is enforce through calls to this method. In derived class from OutDoorScene it is through this method that additional constraints can be imposed!
void ValidateOrMove (ref SceneNode node, float offset)
 The outdoorscene can impose constraints on node positionning. For example most of the time we want the nodes to be above ground level. We do that here. Unlike the above method that reposition based on its bounding box size here we can specify explicitely the offset we want above ground level.
Matrix ValidateOrMove (Vector3 pos, BBox localBBox)
 This is quite coarce we just send back a transformation matrix that would move the object up to its ground level if we see that the object is below the ground! This is based only on the size of the object along the y axis. So a vertical line, a car and a train would be dealt in the same way. This means depending on the object you use some part of it can go through the ground!
void ValidateCameraOrMove (ref SceneNode camera, ref SceneNode subject)
 OutdoorScene can impose constraints on the camera position. This is done through this specific method.
virtual void DeviceChanged (Device d3ddevice)
 If our d3ddevice is changed we need to perform some operation on all the resources we use that might bound to the device.
float GetHeigth (float x, float z)
 This method return the ground height at x,z (y is looking up). x looks right z look far away and x=0 z=0 is right in the center of our Terrain and outdoorscene bounding box!
override void Update (double appTime, float elapsedTime, Frustrum frustrum, List< IDrawable > objectsToBeRendered)
 In this method we performed all updates related to our scene. First every node in the scene graph is going to be updated then we will update the water surface if there is any then the skybox (it might not need upadtes but we let the SkyBox instance or the instance of a derived class decide whether or not it needs to perform some operations).
void Update (Device d3ddevice, double appTime, float elapsedTime)
override void RenderScene (Device d3ddevice, Frustrum frustrum)
 This will draw all objects in the list of objects to be rendered. Billboards objects are sorted based on their distance to the camera in order to get correct display of their associated textures with alpha.
override void RenderScene (Device d3ddevice, Matrix matView, Matrix matProj)
 This will draw all objects in the list of objects to be rendered. Billboards objects are sorted based on their distance to the camera in order to get correct display of their associated textures with alpha.
void CheckRefractionReflectionReady ()
void CreateRefractionMap (Device device)
void CreateReflectionMap (Device device)
QuadTreeNode GetNode (int level, int x, int z)
 Get the node at the specified level and x z position (remember y looks up, x look right and z far away at least if your camera has default position and lookat).
SceneNode GetParent (BBox boundingBox)
 Get the optimum quadtree node to which the bounding box should be attached. Alternatively, the returned node will the quadtree node which encompass all the space which should be of interest for collision detection for the specified bounding box. This method used the principle described in the "Direct Access QuadTree Lookup" article from Matt Pritchard in game programming gems II. The implementation used here is mine and might be a little less effective than the one described in that article :).
SceneNode GetParent (SceneNode node)
 Another GetParent method. In fact this method will use the bounding box of the specified node and the above described method to get the best parent.
void RegisterForPositionUpdate (SceneNode node)
 Nodes that have changed position might have to be attach to different quadtree nodes now, this method will allow nodes to register for a latter repositionning in the quadtree.
void UpdatePositionInTree ()
 Nodes that have changed position might have to be attach to different quadtree nodes now, this method will ensure that all nodes that have registered for it will be repositionned in the quadtree. It's the responsability of the node to register for such an update.
override void Attach (SceneObject sceneObj)
 See comments for the above Attach method. They apply here also. This method can be used when you have created the sceneobject or an instance of a derived class yourself and that you just want that instance to be managed by the scene from now on. After that updates on the instance will be made from you and it will have the opportunity to attach when it is in the viewing frustrum.
virtual void AttachStatic (SceneObject sceneObj)
 See comments for the above Attach method. They apply here also. This method can be used when you have created the sceneobject or an instance of a derived class yourself and that you just want that instance to be managed by the scene from now on. After that updates on the instance will be made from you and it will have the opportunity to attach when it is in the viewing frustrum.
virtual void AttachBatch (Mesh mesh, Material[] materials, Texture[] textures, Matrix[] matrices)
void Add (SceneNode node)
 If you want to add a node to the quadtree you should use this method. This method will first search for the right parent node and will add the specified node to it.
override bool Collide (SceneNode sceneNode, ref List< SceneObject > collidingSceneObjects)
 This method will check the quadTree for entities colliding with the specified node. If there is at least one collision true will be returned and the colliding scene object will be added to the arraylist of colliding objects. SceneNode are not returned to the list if they are not also implementing ISceneObject. Spatial coherency is used to optimize the collision detection. It uses the GetParent method to start searching from the best node in the quad tree. This means that if the bounding box of the node you specified is in a portion of the virtual space that we already know that only objects attached to a specific quadtree node can collide with it, we will use that information to start our testing from that node and not from the rootnode of the quadtree. Besides as you can see described in the GetParent method documentation, that GetParent method has been optimized to found very quickly the quadTree node of interest.
override bool CollideSolid (SceneNode sceneNode, ref List< SceneObject > collidingSceneObjects)
 This method will check the quadTree for entities colliding with the specified node. If there is at least one collision true will be returned and the colliding scene object will be added to the arraylist of colliding objects. SceneNode are not returned to the list if they are not also implementing ISceneObject. Spatial coherency is used to optimize the collision detection. It uses the GetParent method to start searching from the best node in the quad tree. This means that if the bounding box of the node you specified is in a portion of the virtual space that we already know that only objects attached to a specific quadtree node can collide with it, we will use that information to start our testing from that node and not from the rootnode of the quadtree. Besides as you can see described in the GetParent method documentation, that GetParent method has been optimized to found very quickly the quadTree node of interest.
override bool Collide (SceneNode sceneNode, ref List< SceneObject > collidingSceneObjects, System.Type desiredType)
 Same as above except that you specify the type of entities you want to check collision with. Apart from that this method works exactly like the one described above.
override bool CollideSolid (SceneNode sceneNode, ref List< SceneObject > collidingSceneObjects, System.Type desiredType)
 Same as above except that here only scene objects flagged as solid are considered.
Terrain LoadTerrain (string filename)
 This method build a terrain from the values in a 257x257 bitmap. As described in the ISceneManager interface this method will try to load the grass.bmp snow.bmp and lightmap.dds texture. I will let you checl the ISceneManager for more details. You should not have to call this method directly and you should call the LoadTerrain method of the Eter.Graphics.Manager. You can get a reference on that one from the control thorugh the graphics field.
Terrain LoadTerrain (Device d3ddevice, string filename)
 This method build a terrain from the values in a 257x257 bitmap. As described in the ISceneManager interface this method will try to load the grass.bmp snow.bmp and lightmap.dds texture. I will let you checl the ISceneManager for more details. You should not have to call this method directly and you should call the LoadTerrain method of the Eter.Graphics.Manager. You can get a reference on that one from the control thorugh the graphics field.
Terrain LoadTerrain (Device d3ddevice, string fileName, string baseTextureFile, string secondTextureFile, string alphaMapFile)
 Same as above except you can specify the base texture the secondtexture and the texture to be used for it's alpha values. The first texture will be applied everywhere on the ground, the second texture will be applied only where the alpha values in lightmap say it should be applied.
override SceneObject PickObject (Viewport viewport, Matrix proj, Matrix view, Vector2 screenPos)
 When you click or double click in the rendering window with the mouse it is often interesting to know on which object you did click. This method does just that. You need to provide the screenposition, the viewport and view and projection matrices (they are needed to build a 3D ray from the 2D screen position that goes through our scene).
override Vector3 PickEnvironmentPosition (Viewport viewport, Matrix proj, Matrix view, Vector2 screenPos)
 You might also want to know what was the terrain position clicked by the mouse, this is what this method performs. Like for pickobject you need to provide viewport, screen position view and projection matrices.
void AddInstances (FrameworkMesh mesh, InstanceInfo[] instancesInfo)
 This method can be used when you want to add several instances of a single mesh to the scene. Not implemented yet but implementation would certainly use the Batch class.
 OutDoorScene (AABBox worldBBox, int depth)
 The constructor of our QuadTree. You can specify a bounding box for the world that the QuadTree will encompass and the depth of the QuadTree that you want to use. By Default it's 4.
void Initialize (AABBox worldBBox, int depth)
override void GetPrepared ()
 Call this if you know you have your objects in scene content but that the node are not attached to the scene graph yet!! For example this is called just after deserializing a whole scene.
override void Dispose ()
 Here we should dispose everything related to our scene !!
void ValidateOrMove (ref SceneNode node)
 The outdoorscene can impose constraints on node positionning. For example most of the time we want the nodes to be above ground level. We do that here. For each node we consider 0,0,0 in local space is at the center of the node bounding box so the size of the node bounding box halved by two is used for the repositionning operation. This position constraint is enforce through calls to this method. In derived class from OutDoorScene it is through this method that additional constraints can be imposed!
void ValidateOrMove (ref SceneNode node, float offset)
 The outdoorscene can impose constraints on node positionning. For example most of the time we want the nodes to be above ground level. We do that here. Unlike the above method that reposition based on its bounding box size here we can specify explicitely the offset we want above ground level.
Matrix ValidateOrMove (Vector3 pos, BBox localBBox)
 This is quite coarce we just send back a transformation matrix that would move the object up to its ground level if we see that the object is below the ground! This is based only on the size of the object along the y axis. So a vertical line, a car and a train would be dealt in the same way. This means depending on the object you use some part of it can go through the ground!
void ValidateCameraOrMove (ref SceneNode camera, ref SceneNode subject)
 OutdoorScene can impose constraints on the camera position. This is done through this specific method.
virtual void DeviceChanged (Device d3ddevice)
 If our d3ddevice is changed we need to perform some operation on all the resources we use that might bound to the device.
float GetHeigth (float x, float z)
 This method return the ground height at x,z (y is looking up). x looks right z look far away and x=0 z=0 is right in the center of our Terrain and outdoorscene bounding box!
override void Update (double appTime, float elapsedTime, Frustrum frustrum, List< IDrawable > objectsToBeRendered)
 In this method we performed all updates related to our scene. First every node in the scene graph is going to be updated then we will update the water surface if there is any then the skybox (it might not need upadtes but we let the SkyBox instance or the instance of a derived class decide whether or not it needs to perform some operations).
void Update (Device d3ddevice, double appTime, float elapsedTime)
override void RenderScene (Device d3ddevice, Frustrum frustrum)
 This will draw all objects in the list of objects to be rendered. Billboards objects are sorted based on their distance to the camera in order to get correct display of their associated textures with alpha.
override void RenderScene (Device d3ddevice, Matrix matView, Matrix matProj)
 This will draw all objects in the list of objects to be rendered. Billboards objects are sorted based on their distance to the camera in order to get correct display of their associated textures with alpha.
void CheckRefractionReflectionReady ()
void CreateRefractionMap (Device device)
void CreateReflectionMap (Device device)
QuadTreeNode GetNode (int level, int x, int z)
 Get the node at the specified level and x z position (remember y looks up, x look right and z far away at least if your camera has default position and lookat).
SceneNode GetParent (BBox boundingBox)
 Get the optimum quadtree node to which the bounding box should be attached. Alternatively, the returned node will the quadtree node which encompass all the space which should be of interest for collision detection for the specified bounding box. This method used the principle described in the "Direct Access QuadTree Lookup" article from Matt Pritchard in game programming gems II. The implementation used here is mine and might be a little less effective than the one described in that article :).
SceneNode GetParent (SceneNode node)
 Another GetParent method. In fact this method will use the bounding box of the specified node and the above described method to get the best parent.
void RegisterForPositionUpdate (SceneNode node)
 Nodes that have changed position might have to be attach to different quadtree nodes now, this method will allow nodes to register for a latter repositionning in the quadtree.
void UpdatePositionInTree ()
 Nodes that have changed position might have to be attach to different quadtree nodes now, this method will ensure that all nodes that have registered for it will be repositionned in the quadtree. It's the responsability of the node to register for such an update.
override void Attach (SceneObject sceneObj)
 See comments for the above Attach method. They apply here also. This method can be used when you have created the sceneobject or an instance of a derived class yourself and that you just want that instance to be managed by the scene from now on. After that updates on the instance will be made from you and it will have the opportunity to attach when it is in the viewing frustrum.
virtual void AttachStatic (SceneObject sceneObj)
 See comments for the above Attach method. They apply here also. This method can be used when you have created the sceneobject or an instance of a derived class yourself and that you just want that instance to be managed by the scene from now on. After that updates on the instance will be made from you and it will have the opportunity to attach when it is in the viewing frustrum.
virtual void AttachBatch (Mesh mesh, Material[] materials, Texture[] textures, Matrix[] matrices)
void Add (SceneNode node)
 If you want to add a node to the quadtree you should use this method. This method will first search for the right parent node and will add the specified node to it.
override bool Collide (SceneNode sceneNode, ref List< SceneObject > collidingSceneObjects)
 This method will check the quadTree for entities colliding with the specified node. If there is at least one collision true will be returned and the colliding scene object will be added to the arraylist of colliding objects. SceneNode are not returned to the list if they are not also implementing ISceneObject. Spatial coherency is used to optimize the collision detection. It uses the GetParent method to start searching from the best node in the quad tree. This means that if the bounding box of the node you specified is in a portion of the virtual space that we already know that only objects attached to a specific quadtree node can collide with it, we will use that information to start our testing from that node and not from the rootnode of the quadtree. Besides as you can see described in the GetParent method documentation, that GetParent method has been optimized to found very quickly the quadTree node of interest.
override bool CollideSolid (SceneNode sceneNode, ref List< SceneObject > collidingSceneObjects)
 This method will check the quadTree for entities colliding with the specified node. If there is at least one collision true will be returned and the colliding scene object will be added to the arraylist of colliding objects. SceneNode are not returned to the list if they are not also implementing ISceneObject. Spatial coherency is used to optimize the collision detection. It uses the GetParent method to start searching from the best node in the quad tree. This means that if the bounding box of the node you specified is in a portion of the virtual space that we already know that only objects attached to a specific quadtree node can collide with it, we will use that information to start our testing from that node and not from the rootnode of the quadtree. Besides as you can see described in the GetParent method documentation, that GetParent method has been optimized to found very quickly the quadTree node of interest.
override bool Collide (SceneNode sceneNode, ref List< SceneObject > collidingSceneObjects, System.Type desiredType)
 Same as above except that you specify the type of entities you want to check collision with. Apart from that this method works exactly like the one described above.
override bool CollideSolid (SceneNode sceneNode, ref List< SceneObject > collidingSceneObjects, System.Type desiredType)
 Same as above except that here only scene objects flagged as solid are considered.
Terrain LoadTerrain (string filename)
 This method build a terrain from the values in a 257x257 bitmap. As described in the ISceneManager interface this method will try to load the grass.bmp snow.bmp and lightmap.dds texture. I will let you checl the ISceneManager for more details. You should not have to call this method directly and you should call the LoadTerrain method of the Eter.Graphics.Manager. You can get a reference on that one from the control thorugh the graphics field.
Terrain LoadTerrain (Device d3ddevice, string filename)
 This method build a terrain from the values in a 257x257 bitmap. As described in the ISceneManager interface this method will try to load the grass.bmp snow.bmp and lightmap.dds texture. I will let you checl the ISceneManager for more details. You should not have to call this method directly and you should call the LoadTerrain method of the Eter.Graphics.Manager. You can get a reference on that one from the control thorugh the graphics field.
Terrain LoadTerrain (Device d3ddevice, string fileName, string baseTextureFile, string secondTextureFile, string alphaMapFile)
 Same as above except you can specify the base texture the secondtexture and the texture to be used for it's alpha values. The first texture will be applied everywhere on the ground, the second texture will be applied only where the alpha values in lightmap say it should be applied.
override SceneObject PickObject (Viewport viewport, Matrix proj, Matrix view, Vector2 screenPos)
 When you click or double click in the rendering window with the mouse it is often interesting to know on which object you did click. This method does just that. You need to provide the screenposition, the viewport and view and projection matrices (they are needed to build a 3D ray from the 2D screen position that goes through our scene).
override Vector3 PickEnvironmentPosition (Viewport viewport, Matrix proj, Matrix view, Vector2 screenPos)
 You might also want to know what was the terrain position clicked by the mouse, this is what this method performs. Like for pickobject you need to provide viewport, screen position view and projection matrices.
void AddInstances (FrameworkMesh mesh, InstanceInfo[] instancesInfo)
 This method can be used when you want to add several instances of a single mesh to the scene. Not implemented yet but implementation would certainly use the Batch class.

Public Attributes

string avatarName = ""
Frustrum frustrum = null
Matrix matView
Matrix matProj
float cameraHeightOffset = 3.0f
 This value is used when we check for camera position. The camera should at least be three meters higher than the ground position.
int depth = -1
 This will keep track of our quadtree depth.
const int maxDepth = 8
 Maximum depth allowed for our quadtree implementation. The mechanism we use to fast query which quadtree node contain which position won't allow us to have depth higher than that (at least the way it is implemented at the moment).
Texture env = null

Properties

Avatar CurrentAvatar [get, set]
 This has been moved from DXGfxManager class to here as I retain, the avatar, the input handler and the camera are properties of a specific scene.
ThirdPersonCamera CurrentCamera [get, set]
IInputHandler CurrentInputHandler [get, set]
Vector3 Extents [get]
 This property allow you to retrieve the dimensions of the outdoorscene along each individual axis.
Terrain SceneTerrain [get, set]
 Accessors for sceneTerrain.
Water2 SceneWater [get, set]
 Here are the accessors for the SceneWater.
SkyDome SceneSky [get, set]
 Accessors for the SkyBox instance associated with the outdoorscene.


Detailed Description

This is the main reason why this small library exist. I wanted to be able to display an outdoor scene with terrain without throwing everything I would have in that scene to the video card for each render pass. OutDoorScene inherits from the Scene class it does refine the algorithms for scene graph organisation upadte and draw using the asumption that the is a classical outdoor scene featuring a large terrain. Internally this class uses a quadtree. Some optimization impose that the depth of the quadtree has to be lower than 8. As it might be performance unfriendly to have a too deep tree I use a 4 level deep quadtree. This could be easily changed if needed.

Definition at line 38 of file OutDoorScene.cs.


Constructor & Destructor Documentation

DXGfxLib.OutDoorScene.OutDoorScene ( AABBox  worldBBox,
int  depth 
)

The constructor of our QuadTree. You can specify a bounding box for the world that the QuadTree will encompass and the depth of the QuadTree that you want to use. By Default it's 4.

Parameters:
worldBBox The box that you want your outdoorscene to fill. This is important as when you load a terrain from a 257 per 257 bitmap it is going to be streched/compressed to cover the XZ surface defined by this bounding box.
depth The depth of the Quadtree to build. By default it is 4, which I have always found is an efficient value.

Definition at line 240 of file OutDoorScene.cs.

Here is the call graph for this function:

DXGfxLib.OutDoorScene.OutDoorScene ( AABBox  worldBBox,
int  depth 
)

The constructor of our QuadTree. You can specify a bounding box for the world that the QuadTree will encompass and the depth of the QuadTree that you want to use. By Default it's 4.

Parameters:
worldBBox The box that you want your outdoorscene to fill. This is important as when you load a terrain from a 257 per 257 bitmap it is going to be streched/compressed to cover the XZ surface defined by this bounding box.
depth The depth of the Quadtree to build. By default it is 4, which I have always found is an efficient value.

Definition at line 240 of file OutDoorScene.cs.

Here is the call graph for this function:


Member Function Documentation

void DXGfxLib.OutDoorScene.Add ( SceneNode  node  ) 

If you want to add a node to the quadtree you should use this method. This method will first search for the right parent node and will add the specified node to it.

Parameters:
node 

Definition at line 974 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.Add ( SceneNode  node  ) 

If you want to add a node to the quadtree you should use this method. This method will first search for the right parent node and will add the specified node to it.

Parameters:
node 

Definition at line 974 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.AddInstances ( FrameworkMesh  mesh,
InstanceInfo[]  instancesInfo 
)

This method can be used when you want to add several instances of a single mesh to the scene. Not implemented yet but implementation would certainly use the Batch class.

Parameters:
mesh 
instancesInfo 

Definition at line 1182 of file OutDoorScene.cs.

void DXGfxLib.OutDoorScene.AddInstances ( FrameworkMesh  mesh,
InstanceInfo[]  instancesInfo 
)

This method can be used when you want to add several instances of a single mesh to the scene. Not implemented yet but implementation would certainly use the Batch class.

Parameters:
mesh 
instancesInfo 

Definition at line 1182 of file OutDoorScene.cs.

override void DXGfxLib.OutDoorScene.Attach ( SceneObject  sceneObj  )  [virtual]

See comments for the above Attach method. They apply here also. This method can be used when you have created the sceneobject or an instance of a derived class yourself and that you just want that instance to be managed by the scene from now on. After that updates on the instance will be made from you and it will have the opportunity to attach when it is in the viewing frustrum.

Parameters:
sceneObj 

Reimplemented from DXGfxLib.Scene.

Definition at line 892 of file OutDoorScene.cs.

Here is the call graph for this function:

override void DXGfxLib.OutDoorScene.Attach ( SceneObject  sceneObj  )  [virtual]

See comments for the above Attach method. They apply here also. This method can be used when you have created the sceneobject or an instance of a derived class yourself and that you just want that instance to be managed by the scene from now on. After that updates on the instance will be made from you and it will have the opportunity to attach when it is in the viewing frustrum.

Parameters:
sceneObj 

Reimplemented from DXGfxLib.Scene.

Definition at line 892 of file OutDoorScene.cs.

Here is the call graph for this function:

Here is the caller graph for this function:

virtual void DXGfxLib.OutDoorScene.AttachBatch ( Mesh  mesh,
Material[]  materials,
Texture[]  textures,
Matrix[]  matrices 
) [virtual]

Parameters:
mesh 
materials 
textues 
matrices 

Definition at line 928 of file OutDoorScene.cs.

Here is the call graph for this function:

virtual void DXGfxLib.OutDoorScene.AttachBatch ( Mesh  mesh,
Material[]  materials,
Texture[]  textures,
Matrix[]  matrices 
) [virtual]

Parameters:
mesh 
materials 
textues 
matrices 

Definition at line 928 of file OutDoorScene.cs.

Here is the call graph for this function:

virtual void DXGfxLib.OutDoorScene.AttachStatic ( SceneObject  sceneObj  )  [virtual]

See comments for the above Attach method. They apply here also. This method can be used when you have created the sceneobject or an instance of a derived class yourself and that you just want that instance to be managed by the scene from now on. After that updates on the instance will be made from you and it will have the opportunity to attach when it is in the viewing frustrum.

Parameters:
sceneObj 

Definition at line 907 of file OutDoorScene.cs.

Here is the call graph for this function:

virtual void DXGfxLib.OutDoorScene.AttachStatic ( SceneObject  sceneObj  )  [virtual]

See comments for the above Attach method. They apply here also. This method can be used when you have created the sceneobject or an instance of a derived class yourself and that you just want that instance to be managed by the scene from now on. After that updates on the instance will be made from you and it will have the opportunity to attach when it is in the viewing frustrum.

Parameters:
sceneObj 

Definition at line 907 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.CheckRefractionReflectionReady (  ) 

Definition at line 545 of file OutDoorScene.cs.

void DXGfxLib.OutDoorScene.CheckRefractionReflectionReady (  ) 

Definition at line 545 of file OutDoorScene.cs.

Here is the caller graph for this function:

override bool DXGfxLib.OutDoorScene.Collide ( SceneNode  sceneNode,
ref List< SceneObject collidingSceneObjects,
System.Type  desiredType 
) [virtual]

Same as above except that you specify the type of entities you want to check collision with. Apart from that this method works exactly like the one described above.

Parameters:
sceneNode 
collidingSceneObjects 
desiredType 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1036 of file OutDoorScene.cs.

Here is the call graph for this function:

override bool DXGfxLib.OutDoorScene.Collide ( SceneNode  sceneNode,
ref List< SceneObject collidingSceneObjects 
) [virtual]

This method will check the quadTree for entities colliding with the specified node. If there is at least one collision true will be returned and the colliding scene object will be added to the arraylist of colliding objects. SceneNode are not returned to the list if they are not also implementing ISceneObject. Spatial coherency is used to optimize the collision detection. It uses the GetParent method to start searching from the best node in the quad tree. This means that if the bounding box of the node you specified is in a portion of the virtual space that we already know that only objects attached to a specific quadtree node can collide with it, we will use that information to start our testing from that node and not from the rootnode of the quadtree. Besides as you can see described in the GetParent method documentation, that GetParent method has been optimized to found very quickly the quadTree node of interest.

Parameters:
sceneNode 
collidingSceneObjects 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 997 of file OutDoorScene.cs.

Here is the call graph for this function:

override bool DXGfxLib.OutDoorScene.Collide ( SceneNode  sceneNode,
ref List< SceneObject collidingSceneObjects,
System.Type  desiredType 
) [virtual]

Same as above except that you specify the type of entities you want to check collision with. Apart from that this method works exactly like the one described above.

Parameters:
sceneNode 
collidingSceneObjects 
desiredType 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1036 of file OutDoorScene.cs.

Here is the call graph for this function:

override bool DXGfxLib.OutDoorScene.Collide ( SceneNode  sceneNode,
ref List< SceneObject collidingSceneObjects 
) [virtual]

This method will check the quadTree for entities colliding with the specified node. If there is at least one collision true will be returned and the colliding scene object will be added to the arraylist of colliding objects. SceneNode are not returned to the list if they are not also implementing ISceneObject. Spatial coherency is used to optimize the collision detection. It uses the GetParent method to start searching from the best node in the quad tree. This means that if the bounding box of the node you specified is in a portion of the virtual space that we already know that only objects attached to a specific quadtree node can collide with it, we will use that information to start our testing from that node and not from the rootnode of the quadtree. Besides as you can see described in the GetParent method documentation, that GetParent method has been optimized to found very quickly the quadTree node of interest.

Parameters:
sceneNode 
collidingSceneObjects 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 997 of file OutDoorScene.cs.

Here is the call graph for this function:

override bool DXGfxLib.OutDoorScene.CollideSolid ( SceneNode  sceneNode,
ref List< SceneObject collidingSceneObjects,
System.Type  desiredType 
) [virtual]

Same as above except that here only scene objects flagged as solid are considered.

Parameters:
sceneNode 
collidingSceneObjects 
desiredType 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1050 of file OutDoorScene.cs.

Here is the call graph for this function:

override bool DXGfxLib.OutDoorScene.CollideSolid ( SceneNode  sceneNode,
ref List< SceneObject collidingSceneObjects 
) [virtual]

This method will check the quadTree for entities colliding with the specified node. If there is at least one collision true will be returned and the colliding scene object will be added to the arraylist of colliding objects. SceneNode are not returned to the list if they are not also implementing ISceneObject. Spatial coherency is used to optimize the collision detection. It uses the GetParent method to start searching from the best node in the quad tree. This means that if the bounding box of the node you specified is in a portion of the virtual space that we already know that only objects attached to a specific quadtree node can collide with it, we will use that information to start our testing from that node and not from the rootnode of the quadtree. Besides as you can see described in the GetParent method documentation, that GetParent method has been optimized to found very quickly the quadTree node of interest.

In fact his is the same as the Collid method with the same signature except that here only scene objects flagged as solid are considered.

Parameters:
sceneNode 
collidingSceneObjects 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1021 of file OutDoorScene.cs.

Here is the call graph for this function:

override bool DXGfxLib.OutDoorScene.CollideSolid ( SceneNode  sceneNode,
ref List< SceneObject collidingSceneObjects,
System.Type  desiredType 
) [virtual]

Same as above except that here only scene objects flagged as solid are considered.

Parameters:
sceneNode 
collidingSceneObjects 
desiredType 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1050 of file OutDoorScene.cs.

Here is the call graph for this function:

override bool DXGfxLib.OutDoorScene.CollideSolid ( SceneNode  sceneNode,
ref List< SceneObject collidingSceneObjects 
) [virtual]

This method will check the quadTree for entities colliding with the specified node. If there is at least one collision true will be returned and the colliding scene object will be added to the arraylist of colliding objects. SceneNode are not returned to the list if they are not also implementing ISceneObject. Spatial coherency is used to optimize the collision detection. It uses the GetParent method to start searching from the best node in the quad tree. This means that if the bounding box of the node you specified is in a portion of the virtual space that we already know that only objects attached to a specific quadtree node can collide with it, we will use that information to start our testing from that node and not from the rootnode of the quadtree. Besides as you can see described in the GetParent method documentation, that GetParent method has been optimized to found very quickly the quadTree node of interest.

In fact his is the same as the Collid method with the same signature except that here only scene objects flagged as solid are considered.

Parameters:
sceneNode 
collidingSceneObjects 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1021 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.CreateReflectionMap ( Device  device  ) 

Definition at line 670 of file OutDoorScene.cs.

void DXGfxLib.OutDoorScene.CreateReflectionMap ( Device  device  ) 

Definition at line 670 of file OutDoorScene.cs.

Here is the caller graph for this function:

void DXGfxLib.OutDoorScene.CreateRefractionMap ( Device  device  ) 

Definition at line 633 of file OutDoorScene.cs.

void DXGfxLib.OutDoorScene.CreateRefractionMap ( Device  device  ) 

Definition at line 633 of file OutDoorScene.cs.

Here is the caller graph for this function:

virtual void DXGfxLib.OutDoorScene.DeviceChanged ( Device  d3ddevice  )  [virtual]

If our d3ddevice is changed we need to perform some operation on all the resources we use that might bound to the device.

Parameters:
d3ddevice 

Definition at line 443 of file OutDoorScene.cs.

Here is the call graph for this function:

virtual void DXGfxLib.OutDoorScene.DeviceChanged ( Device  d3ddevice  )  [virtual]

If our d3ddevice is changed we need to perform some operation on all the resources we use that might bound to the device.

Parameters:
d3ddevice 

Definition at line 443 of file OutDoorScene.cs.

Here is the call graph for this function:

override void DXGfxLib.OutDoorScene.Dispose (  )  [virtual]

Here we should dispose everything related to our scene !!

Reimplemented from DXGfxLib.Scene.

Definition at line 360 of file OutDoorScene.cs.

override void DXGfxLib.OutDoorScene.Dispose (  )  [virtual]

Here we should dispose everything related to our scene !!

Reimplemented from DXGfxLib.Scene.

Definition at line 360 of file OutDoorScene.cs.

Here is the caller graph for this function:

float DXGfxLib.OutDoorScene.GetHeigth ( float  x,
float  z 
)

This method return the ground height at x,z (y is looking up). x looks right z look far away and x=0 z=0 is right in the center of our Terrain and outdoorscene bounding box!

Parameters:
x 
z 
Returns:

Definition at line 456 of file OutDoorScene.cs.

Here is the call graph for this function:

float DXGfxLib.OutDoorScene.GetHeigth ( float  x,
float  z 
)

This method return the ground height at x,z (y is looking up). x looks right z look far away and x=0 z=0 is right in the center of our Terrain and outdoorscene bounding box!

Parameters:
x 
z 
Returns:

Definition at line 456 of file OutDoorScene.cs.

Here is the call graph for this function:

Here is the caller graph for this function:

QuadTreeNode DXGfxLib.OutDoorScene.GetNode ( int  level,
int  x,
int  z 
)

Get the node at the specified level and x z position (remember y looks up, x look right and z far away at least if your camera has default position and lookat).

Parameters:
level There are several level in the quadtree, at each level the whole x z scope is covered so you need to decide when calling this method at which level you want a quadtree node to be picked up!
x 
z 
Returns:

Definition at line 721 of file OutDoorScene.cs.

QuadTreeNode DXGfxLib.OutDoorScene.GetNode ( int  level,
int  x,
int  z 
)

Get the node at the specified level and x z position (remember y looks up, x look right and z far away at least if your camera has default position and lookat).

Parameters:
level There are several level in the quadtree, at each level the whole x z scope is covered so you need to decide when calling this method at which level you want a quadtree node to be picked up!
x 
z 
Returns:

Definition at line 721 of file OutDoorScene.cs.

Here is the caller graph for this function:

SceneNode DXGfxLib.OutDoorScene.GetParent ( SceneNode  node  ) 

Another GetParent method. In fact this method will use the bounding box of the specified node and the above described method to get the best parent.

Parameters:
node 
Returns:

Definition at line 832 of file OutDoorScene.cs.

Here is the call graph for this function:

SceneNode DXGfxLib.OutDoorScene.GetParent ( BBox  boundingBox  ) 

Get the optimum quadtree node to which the bounding box should be attached. Alternatively, the returned node will the quadtree node which encompass all the space which should be of interest for collision detection for the specified bounding box. This method used the principle described in the "Direct Access QuadTree Lookup" article from Matt Pritchard in game programming gems II. The implementation used here is mine and might be a little less effective than the one described in that article :).

Parameters:
boundingBox 
Returns:

Definition at line 743 of file OutDoorScene.cs.

Here is the call graph for this function:

SceneNode DXGfxLib.OutDoorScene.GetParent ( SceneNode  node  ) 

Another GetParent method. In fact this method will use the bounding box of the specified node and the above described method to get the best parent.

Parameters:
node 
Returns:

Definition at line 832 of file OutDoorScene.cs.

Here is the call graph for this function:

SceneNode DXGfxLib.OutDoorScene.GetParent ( BBox  boundingBox  ) 

Get the optimum quadtree node to which the bounding box should be attached. Alternatively, the returned node will the quadtree node which encompass all the space which should be of interest for collision detection for the specified bounding box. This method used the principle described in the "Direct Access QuadTree Lookup" article from Matt Pritchard in game programming gems II. The implementation used here is mine and might be a little less effective than the one described in that article :).

Parameters:
boundingBox 
Returns:

Definition at line 743 of file OutDoorScene.cs.

Here is the call graph for this function:

Here is the caller graph for this function:

override void DXGfxLib.OutDoorScene.GetPrepared (  )  [virtual]

Call this if you know you have your objects in scene content but that the node are not attached to the scene graph yet!! For example this is called just after deserializing a whole scene.

Reimplemented from DXGfxLib.Scene.

Definition at line 330 of file OutDoorScene.cs.

Here is the call graph for this function:

override void DXGfxLib.OutDoorScene.GetPrepared (  )  [virtual]

Call this if you know you have your objects in scene content but that the node are not attached to the scene graph yet!! For example this is called just after deserializing a whole scene.

Reimplemented from DXGfxLib.Scene.

Definition at line 330 of file OutDoorScene.cs.

Here is the call graph for this function:

Here is the caller graph for this function:

void DXGfxLib.OutDoorScene.Initialize ( AABBox  worldBBox,
int  depth 
)

Definition at line 245 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.Initialize ( AABBox  worldBBox,
int  depth 
)

Definition at line 245 of file OutDoorScene.cs.

Here is the call graph for this function:

Here is the caller graph for this function:

Terrain DXGfxLib.OutDoorScene.LoadTerrain ( Device  d3ddevice,
string  fileName,
string  baseTextureFile,
string  secondTextureFile,
string  alphaMapFile 
)

Same as above except you can specify the base texture the secondtexture and the texture to be used for it's alpha values. The first texture will be applied everywhere on the ground, the second texture will be applied only where the alpha values in lightmap say it should be applied.

Parameters:
fileName 
baseTextureFile 
secondTextureFile 
alphaMapFile 
Returns:

Definition at line 1101 of file OutDoorScene.cs.

Here is the call graph for this function:

Terrain DXGfxLib.OutDoorScene.LoadTerrain ( Device  d3ddevice,
string  filename 
)

This method build a terrain from the values in a 257x257 bitmap. As described in the ISceneManager interface this method will try to load the grass.bmp snow.bmp and lightmap.dds texture. I will let you checl the ISceneManager for more details. You should not have to call this method directly and you should call the LoadTerrain method of the Eter.Graphics.Manager. You can get a reference on that one from the control thorugh the graphics field.

Parameters:
filename 
Returns:

Definition at line 1083 of file OutDoorScene.cs.

Here is the call graph for this function:

Terrain DXGfxLib.OutDoorScene.LoadTerrain ( string  filename  ) 

This method build a terrain from the values in a 257x257 bitmap. As described in the ISceneManager interface this method will try to load the grass.bmp snow.bmp and lightmap.dds texture. I will let you checl the ISceneManager for more details. You should not have to call this method directly and you should call the LoadTerrain method of the Eter.Graphics.Manager. You can get a reference on that one from the control thorugh the graphics field.

Parameters:
filename 
Returns:

Definition at line 1065 of file OutDoorScene.cs.

Here is the call graph for this function:

Terrain DXGfxLib.OutDoorScene.LoadTerrain ( Device  d3ddevice,
string  fileName,
string  baseTextureFile,
string  secondTextureFile,
string  alphaMapFile 
)

Same as above except you can specify the base texture the secondtexture and the texture to be used for it's alpha values. The first texture will be applied everywhere on the ground, the second texture will be applied only where the alpha values in lightmap say it should be applied.

Parameters:
fileName 
baseTextureFile 
secondTextureFile 
alphaMapFile 
Returns:

Definition at line 1101 of file OutDoorScene.cs.

Here is the call graph for this function:

Terrain DXGfxLib.OutDoorScene.LoadTerrain ( Device  d3ddevice,
string  filename 
)

This method build a terrain from the values in a 257x257 bitmap. As described in the ISceneManager interface this method will try to load the grass.bmp snow.bmp and lightmap.dds texture. I will let you checl the ISceneManager for more details. You should not have to call this method directly and you should call the LoadTerrain method of the Eter.Graphics.Manager. You can get a reference on that one from the control thorugh the graphics field.

Parameters:
filename 
Returns:

Definition at line 1083 of file OutDoorScene.cs.

Here is the call graph for this function:

Terrain DXGfxLib.OutDoorScene.LoadTerrain ( string  filename  ) 

This method build a terrain from the values in a 257x257 bitmap. As described in the ISceneManager interface this method will try to load the grass.bmp snow.bmp and lightmap.dds texture. I will let you checl the ISceneManager for more details. You should not have to call this method directly and you should call the LoadTerrain method of the Eter.Graphics.Manager. You can get a reference on that one from the control thorugh the graphics field.

Parameters:
filename 
Returns:

Definition at line 1065 of file OutDoorScene.cs.

Here is the caller graph for this function:

override Vector3 DXGfxLib.OutDoorScene.PickEnvironmentPosition ( Viewport  viewport,
Matrix  proj,
Matrix  view,
Vector2  screenPos 
) [virtual]

You might also want to know what was the terrain position clicked by the mouse, this is what this method performs. Like for pickobject you need to provide viewport, screen position view and projection matrices.

Parameters:
viewport 
proj 
view 
screenPos 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1134 of file OutDoorScene.cs.

Here is the call graph for this function:

override Vector3 DXGfxLib.OutDoorScene.PickEnvironmentPosition ( Viewport  viewport,
Matrix  proj,
Matrix  view,
Vector2  screenPos 
) [virtual]

You might also want to know what was the terrain position clicked by the mouse, this is what this method performs. Like for pickobject you need to provide viewport, screen position view and projection matrices.

Parameters:
viewport 
proj 
view 
screenPos 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1134 of file OutDoorScene.cs.

Here is the call graph for this function:

Here is the caller graph for this function:

override SceneObject DXGfxLib.OutDoorScene.PickObject ( Viewport  viewport,
Matrix  proj,
Matrix  view,
Vector2  screenPos 
) [virtual]

When you click or double click in the rendering window with the mouse it is often interesting to know on which object you did click. This method does just that. You need to provide the screenposition, the viewport and view and projection matrices (they are needed to build a 3D ray from the 2D screen position that goes through our scene).

Parameters:
viewport 
proj 
view 
screenPos 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1120 of file OutDoorScene.cs.

override SceneObject DXGfxLib.OutDoorScene.PickObject ( Viewport  viewport,
Matrix  proj,
Matrix  view,
Vector2  screenPos 
) [virtual]

When you click or double click in the rendering window with the mouse it is often interesting to know on which object you did click. This method does just that. You need to provide the screenposition, the viewport and view and projection matrices (they are needed to build a 3D ray from the 2D screen position that goes through our scene).

Parameters:
viewport 
proj 
view 
screenPos 
Returns:

Reimplemented from DXGfxLib.Scene.

Definition at line 1120 of file OutDoorScene.cs.

void DXGfxLib.OutDoorScene.RegisterForPositionUpdate ( SceneNode  node  ) 

Nodes that have changed position might have to be attach to different quadtree nodes now, this method will allow nodes to register for a latter repositionning in the quadtree.

Parameters:
node 

Definition at line 842 of file OutDoorScene.cs.

void DXGfxLib.OutDoorScene.RegisterForPositionUpdate ( SceneNode  node  ) 

Nodes that have changed position might have to be attach to different quadtree nodes now, this method will allow nodes to register for a latter repositionning in the quadtree.

Parameters:
node 

Definition at line 842 of file OutDoorScene.cs.

Here is the caller graph for this function:

override void DXGfxLib.OutDoorScene.RenderScene ( Device  d3ddevice,
Matrix  matView,
Matrix  matProj 
) [virtual]

This will draw all objects in the list of objects to be rendered. Billboards objects are sorted based on their distance to the camera in order to get correct display of their associated textures with alpha.

Parameters:
d3ddevice 

Reimplemented from DXGfxLib.Scene.

Definition at line 516 of file OutDoorScene.cs.

Here is the call graph for this function:

override void DXGfxLib.OutDoorScene.RenderScene ( Device  d3ddevice,
Frustrum  frustrum 
) [virtual]

This will draw all objects in the list of objects to be rendered. Billboards objects are sorted based on their distance to the camera in order to get correct display of their associated textures with alpha.

Parameters:
d3ddevice 
frustrum 

Reimplemented from DXGfxLib.Scene.

Definition at line 505 of file OutDoorScene.cs.

Here is the call graph for this function:

override void DXGfxLib.OutDoorScene.RenderScene ( Device  d3ddevice,
Matrix  matView,
Matrix  matProj 
) [virtual]

This will draw all objects in the list of objects to be rendered. Billboards objects are sorted based on their distance to the camera in order to get correct display of their associated textures with alpha.

Parameters:
d3ddevice 

Reimplemented from DXGfxLib.Scene.

Definition at line 516 of file OutDoorScene.cs.

Here is the call graph for this function:

override void DXGfxLib.OutDoorScene.RenderScene ( Device  d3ddevice,
Frustrum  frustrum 
) [virtual]

This will draw all objects in the list of objects to be rendered. Billboards objects are sorted based on their distance to the camera in order to get correct display of their associated textures with alpha.

Parameters:
d3ddevice 
frustrum 

Reimplemented from DXGfxLib.Scene.

Definition at line 505 of file OutDoorScene.cs.

Here is the caller graph for this function:

void DXGfxLib.OutDoorScene.Update ( Device  d3ddevice,
double  appTime,
float  elapsedTime 
)

Definition at line 498 of file OutDoorScene.cs.

Here is the call graph for this function:

override void DXGfxLib.OutDoorScene.Update ( double  appTime,
float  elapsedTime,
Frustrum  frustrum,
List< IDrawable objectsToBeRendered 
) [virtual]

In this method we performed all updates related to our scene. First every node in the scene graph is going to be updated then we will update the water surface if there is any then the skybox (it might not need upadtes but we let the SkyBox instance or the instance of a derived class decide whether or not it needs to perform some operations).

Parameters:
appTime Aboslute time value
elapsedTime Elapsed time since last update.
frustrum Viewing frustrum at the time of the update. This is used by scene node to know whether or not they are in the viewing frsutrum and thus need to be rendered or not!
objectsToBeRendered Each node that decides that it needs to be rendered on screen need to add itself to the list of objects to be rendered for this frame.

Reimplemented from DXGfxLib.Scene.

Definition at line 479 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.Update ( Device  d3ddevice,
double  appTime,
float  elapsedTime 
)

Definition at line 498 of file OutDoorScene.cs.

Here is the call graph for this function:

override void DXGfxLib.OutDoorScene.Update ( double  appTime,
float  elapsedTime,
Frustrum  frustrum,
List< IDrawable objectsToBeRendered 
) [virtual]

In this method we performed all updates related to our scene. First every node in the scene graph is going to be updated then we will update the water surface if there is any then the skybox (it might not need upadtes but we let the SkyBox instance or the instance of a derived class decide whether or not it needs to perform some operations).

Parameters:
appTime Aboslute time value
elapsedTime Elapsed time since last update.
frustrum Viewing frustrum at the time of the update. This is used by scene node to know whether or not they are in the viewing frsutrum and thus need to be rendered or not!
objectsToBeRendered Each node that decides that it needs to be rendered on screen need to add itself to the list of objects to be rendered for this frame.

Reimplemented from DXGfxLib.Scene.

Definition at line 479 of file OutDoorScene.cs.

Here is the call graph for this function:

Here is the caller graph for this function:

void DXGfxLib.OutDoorScene.UpdatePositionInTree (  ) 

Nodes that have changed position might have to be attach to different quadtree nodes now, this method will ensure that all nodes that have registered for it will be repositionned in the quadtree. It's the responsability of the node to register for such an update.

Definition at line 861 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.UpdatePositionInTree (  ) 

Nodes that have changed position might have to be attach to different quadtree nodes now, this method will ensure that all nodes that have registered for it will be repositionned in the quadtree. It's the responsability of the node to register for such an update.

Definition at line 861 of file OutDoorScene.cs.

Here is the call graph for this function:

Here is the caller graph for this function:

void DXGfxLib.OutDoorScene.ValidateCameraOrMove ( ref SceneNode  camera,
ref SceneNode  subject 
)

OutdoorScene can impose constraints on the camera position. This is done through this specific method.

Parameters:
camera 
subject 

Implements DXGfxLib.IPositionConstraint.

Definition at line 431 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.ValidateCameraOrMove ( ref SceneNode  camera,
ref SceneNode  subject 
)

OutdoorScene can impose constraints on the camera position. This is done through this specific method.

Parameters:
camera 
subject 

Implements DXGfxLib.IPositionConstraint.

Definition at line 431 of file OutDoorScene.cs.

Here is the call graph for this function:

Matrix DXGfxLib.OutDoorScene.ValidateOrMove ( Vector3  pos,
BBox  localBBox 
)

This is quite coarce we just send back a transformation matrix that would move the object up to its ground level if we see that the object is below the ground! This is based only on the size of the object along the y axis. So a vertical line, a car and a train would be dealt in the same way. This means depending on the object you use some part of it can go through the ground!

Parameters:
pos The position we would like for the geometry encompassed by the bbox
localBBox 
Returns:

Implements DXGfxLib.IPositionConstraint.

Definition at line 413 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.ValidateOrMove ( ref SceneNode  node,
float  offset 
)

The outdoorscene can impose constraints on node positionning. For example most of the time we want the nodes to be above ground level. We do that here. Unlike the above method that reposition based on its bounding box size here we can specify explicitely the offset we want above ground level.

Parameters:
node 
offset 

Definition at line 392 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.ValidateOrMove ( ref SceneNode  node  ) 

The outdoorscene can impose constraints on node positionning. For example most of the time we want the nodes to be above ground level. We do that here. For each node we consider 0,0,0 in local space is at the center of the node bounding box so the size of the node bounding box halved by two is used for the repositionning operation. This position constraint is enforce through calls to this method. In derived class from OutDoorScene it is through this method that additional constraints can be imposed!

Parameters:
node The node to reposition.

Implements DXGfxLib.IPositionConstraint.

Definition at line 380 of file OutDoorScene.cs.

Here is the call graph for this function:

Matrix DXGfxLib.OutDoorScene.ValidateOrMove ( Vector3  pos,
BBox  localBBox 
)

This is quite coarce we just send back a transformation matrix that would move the object up to its ground level if we see that the object is below the ground! This is based only on the size of the object along the y axis. So a vertical line, a car and a train would be dealt in the same way. This means depending on the object you use some part of it can go through the ground!

Parameters:
pos The position we would like for the geometry encompassed by the bbox
localBBox 
Returns:

Implements DXGfxLib.IPositionConstraint.

Definition at line 413 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.ValidateOrMove ( ref SceneNode  node,
float  offset 
)

The outdoorscene can impose constraints on node positionning. For example most of the time we want the nodes to be above ground level. We do that here. Unlike the above method that reposition based on its bounding box size here we can specify explicitely the offset we want above ground level.

Parameters:
node 
offset 

Definition at line 392 of file OutDoorScene.cs.

Here is the call graph for this function:

void DXGfxLib.OutDoorScene.ValidateOrMove ( ref SceneNode  node  ) 

The outdoorscene can impose constraints on node positionning. For example most of the time we want the nodes to be above ground level. We do that here. For each node we consider 0,0,0 in local space is at the center of the node bounding box so the size of the node bounding box halved by two is used for the repositionning operation. This position constraint is enforce through calls to this method. In derived class from OutDoorScene it is through this method that additional constraints can be imposed!

Parameters:
node The node to reposition.

Implements DXGfxLib.IPositionConstraint.

Definition at line 380 of file OutDoorScene.cs.

Here is the caller graph for this function:


Member Data Documentation

Definition at line 62 of file OutDoorScene.cs.

This value is used when we check for camera position. The camera should at least be three meters higher than the ground position.

Definition at line 120 of file OutDoorScene.cs.

This will keep track of our quadtree depth.

Definition at line 140 of file OutDoorScene.cs.

Definition at line 227 of file OutDoorScene.cs.

Definition at line 81 of file OutDoorScene.cs.

Definition at line 84 of file OutDoorScene.cs.

Definition at line 83 of file OutDoorScene.cs.

Maximum depth allowed for our quadtree implementation. The mechanism we use to fast query which quadtree node contain which position won't allow us to have depth higher than that (at least the way it is implemented at the moment).

Definition at line 147 of file OutDoorScene.cs.


Property Documentation

Avatar DXGfxLib.OutDoorScene::CurrentAvatar [get, set]

This has been moved from DXGfxManager class to here as I retain, the avatar, the input handler and the camera are properties of a specific scene.

Definition at line 46 of file OutDoorScene.cs.

ThirdPersonCamera DXGfxLib.OutDoorScene::CurrentCamera [get, set]

Definition at line 67 of file OutDoorScene.cs.

IInputHandler DXGfxLib.OutDoorScene::CurrentInputHandler [get, set]

Definition at line 93 of file OutDoorScene.cs.

Vector3 DXGfxLib.OutDoorScene::Extents [get]

This property allow you to retrieve the dimensions of the outdoorscene along each individual axis.

Definition at line 164 of file OutDoorScene.cs.

SkyDome DXGfxLib.OutDoorScene::SceneSky [get, set]

Accessors for the SkyBox instance associated with the outdoorscene.

Definition at line 222 of file OutDoorScene.cs.

Terrain DXGfxLib.OutDoorScene::SceneTerrain [get, set]

Accessors for sceneTerrain.

Definition at line 192 of file OutDoorScene.cs.

Water2 DXGfxLib.OutDoorScene::SceneWater [get, set]

Here are the accessors for the SceneWater.

Definition at line 208 of file OutDoorScene.cs.


The documentation for this class was generated from the following files:

Generated on Thu Jan 8 20:49:12 2009 for DXGfx by  doxygen 1.5.8