Package DXGfxLib


Packages

package  Serialization

Classes

class  Area
 This is a scene node that can be visualized in the editor thus this class derives from MeshObject. When the simulation is run there, this SceneObject does not display itself (it's fully transparent). Still instances of this class will be positionned in our 3D world and will most probably be used by the logic of other SceneObject, to know for example in which direction a SceneObject should move, that kind of stuff!! More...
class  EnhancedFrame
 We want to update world position of each frame in the Update phase of our scene graph. The base Frame doesn't keep track of that worldPosition so we need to derive from Frame and add members to our class in order to be able to store that matrix. More...
class  EnhancedMeshContainer
 We want to keep track of quite a lot of information that are not kept by MeshContainer. So we derive our own class from it and add members to keep track of every single information we need. These information are populated when loading a hierarchy from file by EnhancedAllocateHierarchy. More...
class  EnhancedAllocateHierarchy
 In order to create derived classes instead of base Frame and MeshContainer we need to provide our own class deriving from AllocateHierarchy. This is EnhancedAllocateHierarchy. More...
class  ArticulatedModel
 Each time you want to add an animated model to your scene you should use this class or a class that derives from this. The model and associated animations are going to be loaded from a X file. By default all animations will be played as soon as the instance of this class is added to the scene. More...
class  Avatar
 The avatar is a special scene node. It is meant to be used in conjonction with a class implementing IInputHandler. The input handler will be notified of events and will pass relevant information both to the camera and the avatar. Each of these could also possibly implement its own logic to react to event. At the moment this is a bit overengineered as we have only a ThirdPersonCamera and a Base avatar class but this could change in the future. More...
struct  InstanceInfo
 This structure is meant to be used to store information about position and rotation of one instance of the geometry we want to render. It is anticipated that this structure will be used for geometries on the groung thus the only rotation information in that structure is the rotation around the Y axis. In fact this structure is not used at the moment. More...
class  Batch
 The batch class. This class can be useful if we have many instances of a geometry with a small number of faces. In that specific situation you can make a batch out of these geometries. They will be pre transform and but in one big mesh. At the moment you should use geometries with only one subset, if you have several materials and subsets in your mesh all vertices that will be put in the big mesh will be rendered with first material and texture as if they were all part of subset 0. During my testing I have attempted to use this class for the tress of the demo. I was doing these tests with trees of 1600 faces (quite a lot for a tree but good for testing :)) this did not give good results. In fact it was much better to have each tree as a separate SceneObject. This might change based on which machine you run the program on but there will always be some tradeoff to make. At the moment the limit for the big buffer is 5000. Maybe that's still too high. More...
class  Billboard
 Billboards are texture quad always watching the camera. They are some time useful as impostors when you don't want to render a very complex object. Texture displayed by billboard should have an alpha channel in order not to occlude everything behind. The library will sort them approiately from back to front before rendering them with alpha. This class inherits from TexturedPlane, main differences are that TexturePlanes don't always look at the camera and are not necessarily rendered using alpha blending. More...
interface  IHaveID
class  HaveID
class  FloatArray
class  ColladaSource
class  VerticesMapping
class  ColladaMaterial
class  ColladaEffectProp
class  ColladaEffect
class  ColladaImage
class  Triangles
class  LoadedEntity
class  ColladaGeometry
class  ColladaLoader
class  Cursor
 An instance of the cursor class will be used by the editor while editing the scene. Even if an instance of this class is part of the scene, it won't be displayed while the simulation is running. It will be displayed only while editing the scene. More...
class  DXGfxManager
 This class is a recent addition to the library. It has been added when I have started to use effect file. This was a good central place to place a default effect group. Also this class is used from the editor. More...
class  EffectException
 Now that we use Effects, this means that at some point we do load them and compile them. This exception type is designed specifficaly for situations were bad things did happen during the compilation of the effect file. More...
class  EffectGroup
 This class is a convenient class to package everything related to the effects that might be needed to render a geometry. At the moment this class will act as a container for various types of effects associated with various situations. This is a bit premature as in the current version of the sample associated with the library we use only the default effect of an effect group. More...
class  Event
 Events are very brute. They are only three strings, a time value (the time at which we should fire them) and a boolean stating whether they have been fired or not. This is brute but pretty flexible as you can put pretty much everything in strings, even source code that has to be compiled... everything. Obviously this class will be derived for more specific event types but for the moment this is just the base class, the most generic possible event for this library. More...
class  FileNameConverter
class  FileNameEditor
class  FileNameUIEditor
class  FrameworkMeshObject
class  FreeCamera
 Thie class is a third person camera. The camera will stay behind the specified scene node. YOu can rotate around it to a certain extend with the mouse while pressing the third button. More...
class  Frustrum
interface  IAmScriptable
interface  IDrawable
 This interface should be implemented by all classes that want the ability to be drawn. It derives from IComparable as we want the ability to sort these objects before rendering in order to minimize state changes for the video card and unecessary loading and unloading of effects. More...
interface  IInputHandler
class  Impostor
 This isn't really a nice impostor. I should add alpha testing for this class to become really of interest. This is yet to be done. More...
interface  IPositionConstraint
 This interface can be implemented by each class that is going to impose a constraint on a node position. At the moment this interface is implemented by the scene itself. Each scene node has a unique field to keep a reference to an instance of an object implementing this. If it is desired to add other objects that implement that interface and to actually use them you will most probably need to derive your own class from Scene or OutDoorScene and managed the calls yourself. More...
class  DrawableBBox
 This is a helper class in order to display a wireframe bounding box for our geometries. More...
class  BBox
 Culling and collision detection is based on this class. More...
class  AABBox
 AABBox stand for axis aligned bounding box. This is means a bouding box which remain aligned with world space axis. In some situation this can become a very coarse approximation of an ideal bounding volume. For efficiency reason the scene graph perform only on AABBox this is more efficient to build bounding volume from children. As the scene graph uses these information only to reject portion of the graph when we are sure the are out of the viewing frustrum or to perform a first selection of node potentially colliding with another box or a ray, having big bounding volume is not that bad. More...
class  BBoxPlanes
 This class is used to contain the collection of planes that do constitue a bounding box. More...
class  MathUtil
 This class is not meant to be instanciated. It is just a convenient way to regroup helper functions. They are defined as static method of the class. More...
class  ZMask
 This class is used to calculate a but mask around bouding boxes. Could be use to further refine frustrum culling. Not used at the moment. More...
class  MeshObject
class  MeshObjectWithLOD
class  MeshRessource
 FrameworkMesh is very a very convenient class when you only want to load a Mesh. This class does a bit the same thing except that it does only what I want and I might extend it in the future. Still basically it does pretty much the same thing as FrameworkMesh at this stage. It loads mesh geometry and textures. Also most of the time you will ask the ressource manager to get a MeshRessource for you and it will only load it once. Refcounting for a ressource might be desirable and I might end doing something just like that. At this stage it is not done though. It is easy to do but I still have to decide if I really need a ressource manager in this library or not. More...
class  ObjectFromMeshRessource
 This is a MeshObject which uses a MeshRessource. More...
struct  MaterialFromObj
 This structure is used to store material information. More...
class  ObjectFromObj
 This class is used to load .obj file (wavefront format). It is not finished yet. It expect to read vertices with normal and texture information. If the file you pass to that class lack these information the object that will be displayed in the end will be ugly to say the least. More...
class  OutDoorScene
 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...
class  PointAndClickHandler
 This class knows how to handle user inputs in a point and click scenario. More...
class  QuadTreeNode
 A quadtree node is a special sceneNode that goes into a quadtree. Does it behaves differently from any other scenenode, not really except we want to know that we are dealing with a quadtree node and not just a simple scenenode this is why this class exists even if we don't perform any operation differently for it than for the base scenenode. More...
class  Query
 This class only contains static member function that are helper function that can be use from scripts. There are functions to perform geometric queries, to react to events from script, to act on parent nodes. More...
class  RawObject
class  ReflectionHelper
class  RessourceManager
 At the moment this class is only use to control that we load a MeshRessource only once. This is not completely fnished yet, for example there is no usage ref count. This will be implemented once I have decided if the library will start managing ressources or if these should always be managed by the calling code and that the library should remain only a scene graph libary. This is still undecided. More...
class  Scene
class  SceneNode
 A SceneNode is the basic building block of the scene graph. It keep track of its parent node and child nodes can be attached to it. It keep track of its bounding information and can update these when needed based on the children bounding information and positions. Also a scene node can be moved in several ways with or without moving the children in the same manner. More...
class  SceneObject
class  ExecutableBlock
 This class is the base class of the classes that are going to be created on the fly by the Script object from the source code in skeleton, varSrc and codeSrc. More...
class  Script
 The script class. This class contains the logic to build. More...
class  ScriptHelpers
 This will contain only static methods meant to be used from script. More...
class  ScriptManager
 With the addition of scripts to scene node, we needed a central class to perform compilation and other services for the Script class so that it becomes usable. This is the role of the script manager. This class keeps track of whether the script are up to date and everything. It manage the compilation of the scripts... More...
class  SkyBox
 This class features a very raw and basic skybox. It loads everything from an x file. More...
class  SkyDome
class  StringUtil
 This helper class is not really meant to be instanciated but it's static methods are going to be very usefull for the kind of string manipulation we need in EterEngine. For example extract the extension of a fileName, struncate the base directory out of a full pathname and build relative path. Not a very exciting job but this has to be done. More...
class  Terrain
 Terrain2 class manage a full 3D Terrain2. The Terrain2 will be built from a 2D grey level bitmap, which size need to be 259*259 nad which format need to be bmp. At loading time you need to provide a D3ddevice and a ref to an outdoor scene. The Terrain2 will be build of a multitude of tiles that will be registered to the outdoor scene graph. The current implementation of OutDoorScene feature a Quadtree for efficient culling of a Terrain2 outdoor scene. The quadtree struture is also used to optimize intersection methods. The Terrain2 is multi textured. The method used is to render at max two texture per pass which should accomodate even very old 3D cards. More...
struct  TerrainVertex
class  TerrainTile
 TerrainTile class is used by the terrain class. A terrain is built of a multitude of terraintile. TerrainTile derives from SceneObject, it has bounding information, and frustrum culling will be performed to know if the tile need to be rendered or not! You should not have to mess directly with Terrain tiles, this is why this class is marked as internal. Also if one day this assembly would need to be obfuscated, this would help obfuscation tools perform a better obfuscation. More...
class  TexturedPlane
 This class is used by the water class for exemple. It just makes a plane :). More...
class  ThirdPersonCamera
 Thie class is a third person camera. The camera will stay behind the specified scene node. YOu can rotate around it to a certain extend with the mouse while pressing the third button. More...
class  TimeLine
 Our scene node also have a TimeLine associated with them. Here we manage events. Events are added on the timeline and the timeline has the responsability to fire them when needed. More...
class  Trigger
 Triggers are a specific kind of world Area that have actions associated with them. The actions are triggered when an object enter the Area of the trigger. Trigger could react only to some specific types entering the Area or named object, they could post events or perform any kind of other actions. More...
class  Water
 This class is used to get some water displayed on screen. More...
class  Water2
class  domei
class  SampleScene
class  test
class  Test2
class  test3
class  tiger

Enumerations

enum  AvatarState { Moving, Resting, Moving, Resting }
enum  EffectCategory {
  RenderScene, RenderLight, RenderEnvMap, RenderScene,
  RenderLight, RenderEnvMap
}
 We use this enumeration to know to which group our effect might be related to. More...
enum  planeRelativePosition {
  front, back, intersect, front,
  back, intersect
}
 This enumeration contains all possible situation to a plane. More...
enum  AvatarState { Moving, Resting, Moving, Resting }
enum  EffectCategory {
  RenderScene, RenderLight, RenderEnvMap, RenderScene,
  RenderLight, RenderEnvMap
}
 We use this enumeration to know to which group our effect might be related to. More...
enum  planeRelativePosition {
  front, back, intersect, front,
  back, intersect
}
 This enumeration contains all possible situation to a plane. More...

Functions

delegate void NodeMovedEventHandler (SceneNode node)
 This delegate exist to define a NodeMoved event to which user code can subscribe. This is neeeded as some code part might need to be notified of such an event. For example in some scene graph like the QuadTree you need to reposition the node in the tree when such an event arise.

Enumeration Type Documentation

Enumerator:
Moving 
Resting 
Moving 
Resting 

Definition at line 10 of file Avatar.cs.

Enumerator:
Moving 
Resting 
Moving 
Resting 

Definition at line 10 of file Avatar.cs.

We use this enumeration to know to which group our effect might be related to.

Enumerator:
RenderScene 
RenderLight 
RenderEnvMap 
RenderScene 
RenderLight 
RenderEnvMap 

Definition at line 32 of file EffectGroup.cs.

We use this enumeration to know to which group our effect might be related to.

Enumerator:
RenderScene 
RenderLight 
RenderEnvMap 
RenderScene 
RenderLight 
RenderEnvMap 

Definition at line 32 of file EffectGroup.cs.

This enumeration contains all possible situation to a plane.

Enumerator:
front 
back 
intersect 
front 
back 
intersect 

Definition at line 311 of file MathUtil.cs.

This enumeration contains all possible situation to a plane.

Enumerator:
front 
back 
intersect 
front 
back 
intersect 

Definition at line 311 of file MathUtil.cs.


Function Documentation

delegate void DXGfxLib::NodeMovedEventHandler ( SceneNode  node  ) 

This delegate exist to define a NodeMoved event to which user code can subscribe. This is neeeded as some code part might need to be notified of such an event. For example in some scene graph like the QuadTree you need to reposition the node in the tree when such an event arise.

Parameters:
node 

Here is the caller graph for this function:


Generated on Thu Jan 8 20:48:30 2009 for DXGfx by  doxygen 1.5.8