# 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:

[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

string DXGfxLib.OutDoorScene::avatarName = ""

Definition at line 62 of file OutDoorScene.cs.

float DXGfxLib.OutDoorScene::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.

Definition at line 120 of file OutDoorScene.cs.

int DXGfxLib.OutDoorScene::depth = -1

This will keep track of our quadtree depth.

Definition at line 140 of file OutDoorScene.cs.

Texture DXGfxLib.OutDoorScene::env = null

Definition at line 227 of file OutDoorScene.cs.

Frustrum DXGfxLib.OutDoorScene::frustrum = null

Definition at line 81 of file OutDoorScene.cs.

Matrix DXGfxLib.OutDoorScene::matProj

Definition at line 84 of file OutDoorScene.cs.

Matrix DXGfxLib.OutDoorScene::matView

Definition at line 83 of file OutDoorScene.cs.

const int DXGfxLib.OutDoorScene::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).

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:

- D:/guillaume/guillara/3D/DXGfx/Backup/DXGfxLib/OutDoorScene.cs
- D:/guillaume/guillara/3D/DXGfx/DXGfxLib/OutDoorScene.cs