ShipLevel Class Reference

Cette classe gère les élements d'un meme étage: pieces, lumières, portes... More...

#include <ShipLevel.h>

List of all members.

Public Member Functions

 ShipLevel (String Name, int Altitude, SceneManager *SceneMgr, SceneNode *ParentNode)
 Constructeur: Crée un étage vide.
virtual ~ShipLevel ()
 Destructeur.
Vector3 getPosition ()
 Renvoie la position du Level.
void setAllLights (bool On)
 Allume (ou éteint) les lumières de toutes les pieces du niveau.
void setRedLight (bool On)
 Les lumières principales de toutes les pieces du niveau passent au rouge.
void showOneRoom (Room *room)
 Cette fonction affiche la Room demandée, et efface toutes les autres.
void showOneRoom (String roomName)
 Affiche la pièce demandée (les autres sont effacées pour gagner en framerate).
void showAdjacentRooms (Door *Porte)
 Affiche les pièces voisines de la porte.
void showAllRooms ()
 Affiche toutes les pièces du niveau.
void hideAllRooms ()
 Enleve toutes les pièces du niveau.
void showElevator ()
 Affiche la pièce qui fait partie de l'ascenseur.
void setInitialRoom ()
 Etablit l'état initial du vaisseau.
bool openDoor (Door *Porte)
 Cette fonction demande l'ouverture d'une porte.
bool openDoor (String DoorName)
 Cette fonction demande l'ouverture d'une porte.
String getStatus ()
 Renvoie le status du niveau sous forme de chaine XML.
void setAlertLevel (short alert)
 Envoie l'état d'alerte à toutes les pièces du niveau.
Vector3 getCamPos ()
 Cette fonction renvoie la position initiale de la camera dans ce niveau telle que décrite dans le fichier scene.xml (debug).
RoomgetElevatorRoom ()
 Extrait un quaternion du fichier DotScene.
RoomgetRoom (String RoomName)
 Retrouve une piece par son nom. Renvoie NULL si la piece n'est pas à ce niveau.

Protected Member Functions

void addScene ()
 Ajoute une scene (contenant N Room + des porte et des objets).
RoomaddRoom ()
 Ajoute une piece (décrite dans le fichier level.xml ou scene.xml).
DooraddDoor ()
 Ajoute une Porte (décrite dans un fichier XML dotScene).
void addObject (SceneNode *ParentNode)
 Ajoute un objet à une piece.
void addLight (Room *ParentRoom)
 Ajoute une lumière à une piece (décrit dans le fichier level.xml ou scene.xml).
int getMapIndex (String RoomName)
 Renvoie l'index dans le tableau mRoomMap de la Room demandée.
void linkScene ()
 On connecte les differentes pièces du ShipLevel entre elles, grace aux portes.
Vector3 readCamPosition ()
 Renvoie la position du Node <> (décrit dans le fichier scene.xml).
String getXMLattribute (String attribute, String childnode="")
 Renvoie un attribut du fichier XML.
Vector3 getXMLvector (String childnode)
 Renvoie le vecteur demandé, soit du fichier XML de la scene ou du niveau.
bool getXMLboolean (String attribute, bool DefaultValue, String childnode)
 Renvoie un attribut boolean du fichier XML.
Vector3 getXMLColour ()
 Renvoie la couleur du node "light".
Vector3 getXMLLightDirection ()
 Renvoie la direction d'une lumière directionnelle.
Real getXMLLightRange ()
 Renvoie le range du node "light".
int getXMLRotation ()
Quaternion getXMLOrientation ()
 Extrait le quaternion "orientation" du node courant du fichier DotScene.
String getXMLuserdata (String PropertyName)
 Renvoie le userData demandé.
void rotateNode (SceneNode *node, Real Orientation, Quaternion q=Quaternion::IDENTITY)
 Cette fonction oriente un Node.

Protected Attributes

String mLevelName
SceneNode * mLevelNode
SceneManager * mSceneMgr
SceneNode * mParentNode
ShipLevel_XMLparsermXMLlevel
Scene_XMLparsermXMLscene
int mRoomIndex
int mDoorIndex
t_Map mDoorMap [MAP_SIZE]
RoommRoomMap [MAP_SIZE]
 Le tableau de toutes les Room du niveau.
RoommElevatorRoom
 La piece du niveau qui joue le role d'ascensceur.
bool mSceneLevel
 Ce flag indique que le niveau entier est decrit par un fichier DotScene.
bool mSceneRoom
 Ce flag indique que la Room est decrite individuellement par un fichier DotScene.
Vector3 mCamPos
 Position initiale de la camera dans ce niveau (debug).
bool mBlender
 Indique si la source du Level est Blender. Auquel cas, il y a une correction d'orientation à faire.

Classes

struct  t_Map
 < Cette structure contient le plan du Level More...


Detailed Description

Cette classe gère les élements d'un meme étage: pieces, lumières, portes...

Cette classe gère l'affichage (ou non) des pieces, selon l'emplacement du joueur (=camera) sur la carte. Le level est décrit dans un fichier XML, qui contient des Room, des Door, et des Scenes. Une Scene est aussi un fichier XML (au format "dotScene" qui contient 1 Romm et 1 Door).


Constructor & Destructor Documentation

ShipLevel::ShipLevel String  Name,
int  Altitude,
SceneManager *  SceneMgr,
SceneNode *  ParentNode
 

Constructeur: Crée un étage vide.

ShipLevel::~ShipLevel  )  [virtual]
 

Destructeur.


Member Function Documentation

Door * ShipLevel::addDoor  )  [protected]
 

Ajoute une Porte (décrite dans un fichier XML dotScene).

Dans le fichier XML, on doit être positionné sur un node DOOR.

Returns:
Un pointeur vers l'objet Door créé. Ou NULL sinon.
Lecture des parametres du fichier de config

void ShipLevel::addLight Room ParentRoom  )  [protected]
 

Ajoute une lumière à une piece (décrit dans le fichier level.xml ou scene.xml).

void ShipLevel::addObject SceneNode *  ParentNode  )  [protected]
 

Ajoute un objet à une piece.

Cet objet est décrit dans le fichier XML dotScene. Il est ajouté là où est positionné le pointeur mCurrentNode.

Parameters:
ParentNode Le node Parent de cet objet au sens 'Ogre" (en général: la Room).

Room * ShipLevel::addRoom  )  [protected]
 

Ajoute une piece (décrite dans le fichier level.xml ou scene.xml).

Note: Le nom de la Room est le node name défini dans le fichier DotScene.

Parameters:
index (optionel) Le No du node correspondant à la Room dans le fichier XML (DotScene)
Returns:
un pointeur sur la Room créée, ou NULL sinon.
Lecture des parametres du fichier de config

Attention, on a une exception si ReferencedRoom n'existe pas...

void ShipLevel::addScene  )  [protected]
 

Ajoute une scene (contenant N Room + des porte et des objets).

Vector3 ShipLevel::getCamPos  ) 
 

Cette fonction renvoie la position initiale de la camera dans ce niveau telle que décrite dans le fichier scene.xml (debug).

Returns:
La position de la camera par rapport au node parent (TheShip)

Room * ShipLevel::getElevatorRoom  ) 
 

Extrait un quaternion du fichier DotScene.

int ShipLevel::getMapIndex String  RoomName  )  [protected]
 

Renvoie l'index dans le tableau mRoomMap de la Room demandée.

Parameters:
RoomName Le nom de la Room recherchée.
Returns:
L'index de la pièce dans la map, ou -1 en cas d'erreur.

Vector3 ShipLevel::getPosition  ) 
 

Renvoie la position du Level.

Room * ShipLevel::getRoom String  RoomName  ) 
 

Retrouve une piece par son nom. Renvoie NULL si la piece n'est pas à ce niveau.

String ShipLevel::getStatus  ) 
 

Renvoie le status du niveau sous forme de chaine XML.

String ShipLevel::getXMLattribute String  attribute,
String  childnode = ""
[protected]
 

Renvoie un attribut du fichier XML.

Dans le cas d'un attribut de scene.xml, c'est un attribut de l'un des fils du node courant. Dans le cas d'un attribut de level.xml, c'est un attribut direct du node courant, et n'y a pas besoin de le chercher dans un node fils. Si childnode est vide, alors c'est un attribut du node courant (et pas d'un fils) Les noms des attributs sont les mêmes pour les deux formats XML.

bool ShipLevel::getXMLboolean String  attribute,
bool  DefaultValue,
String  childnode
[protected]
 

Renvoie un attribut boolean du fichier XML.

Dans le cas d'un attribut de scene.xml, c'est un attribut de l'un des fils du node courant. Dans le cas d'un attribut de level.xml, c'est un attribut direct du node courant, et n'y a pas besoin de le checher dans un node fils. Si childnode est vide, alors c'est un attribut du node courant (et pas d'un fils) Les noms des attributs sont les mêmes pour les deux formats XML.

Vector3 ShipLevel::getXMLColour  )  [protected]
 

Renvoie la couleur du node "light".

La valeur par defaut est le noir.

Vector3 ShipLevel::getXMLLightDirection  )  [protected]
 

Renvoie la direction d'une lumière directionnelle.

Real ShipLevel::getXMLLightRange  )  [protected]
 

Renvoie le range du node "light".

Quaternion ShipLevel::getXMLOrientation  )  [protected]
 

Extrait le quaternion "orientation" du node courant du fichier DotScene.

int ShipLevel::getXMLRotation  )  [protected]
 

La valeur lue dans le XML "dotScene" est un réel [0..1] pour lequel "1" correspond à 380. (je ne sais pas ce que c'est comme unité). La valeur lue dans le XML "level" est un entier en degrés.

Returns:
La valeur correspondante en degrés.
See also:
getXMLOrientation

String ShipLevel::getXMLuserdata String  PropertyName  )  [protected]
 

Renvoie le userData demandé.

Dans les dotScene, les nodes "userdata" sont composés de sous-nodes "property". Ces "property" ont trois attributs: TYPE, NAME et DATA. (TYPE est ignoré).

Parameters:
PropertyName La valeur de l'attribut NAME à lire.
Returns:
La valeur de l'attribut DATA correspondant, (au format String).

Vector3 ShipLevel::getXMLvector String  childnode  )  [protected]
 

Renvoie le vecteur demandé, soit du fichier XML de la scene ou du niveau.

Dans le cas d'un fichier scene.xml, les attributs attendus dans le vecteur sont "x=", "y=" et "z=". On l'utilise en paticulier pour "position" et "scale". La valeur par defaut est un vecteur Nul. Note: ne fonctionne pas pour "colour", car les attributs de dotScene sont alors r, g, b.

void ShipLevel::hideAllRooms  ) 
 

Enleve toutes les pièces du niveau.

void ShipLevel::linkScene  )  [protected]
 

On connecte les differentes pièces du ShipLevel entre elles, grace aux portes.

bool ShipLevel::openDoor String  DoorName  ) 
 

Cette fonction demande l'ouverture d'une porte.

Parameters:
DoorName Le nom de la porte à ouvrir.
Returns:
La fonction renvoie TRUE si la porte appartient bien à ce level, et a été ouverte. Elle renvoie FALSE si la porte n'appartient pas à ce level. ou si la porte appartient à ce level, mais n'a pu etre ouverte.

bool ShipLevel::openDoor Door Porte  ) 
 

Cette fonction demande l'ouverture d'une porte.

Parameters:
Porte La référence de la porte à ouvrir.
Returns:
La fonction renvoie TRUE si la porte appartient bien à ce level, et a été ouverte. Elle renvoie FALSE si la porte n'appartient pas à ce level. ou si la porte appartient à ce level, mais n'a pu etre ouverte.

Vector3 ShipLevel::readCamPosition  )  [protected]
 

Renvoie la position du Node <> (décrit dans le fichier scene.xml).

Dans le fichier DotScene, il y a possibilité de placer un node 'camera', avec une position. C'est utilie pour la mise au point des niveau.

Returns:
La position de la caméra.

void ShipLevel::rotateNode SceneNode *  node,
Real  Orientation,
Quaternion  q = Quaternion::IDENTITY
[protected]
 

Cette fonction oriente un Node.

Simple rotation pour le format LEVEL, un quaternion pour le format DotScene.

void ShipLevel::setAlertLevel short  alert  ) 
 

Envoie l'état d'alerte à toutes les pièces du niveau.

void ShipLevel::setAllLights bool  On  ) 
 

Allume (ou éteint) les lumières de toutes les pieces du niveau.

Le tableau mRoomMap doit être construit avant d'appeler cette fonction.

void ShipLevel::setInitialRoom  ) 
 

Etablit l'état initial du vaisseau.

void ShipLevel::setRedLight bool  On  ) 
 

Les lumières principales de toutes les pieces du niveau passent au rouge.

Le tableau mRoomMap doit être construit avant d'appeler cette fonction.

void ShipLevel::showAdjacentRooms Door Porte  ) 
 

Affiche les pièces voisines de la porte.

void ShipLevel::showAllRooms  ) 
 

Affiche toutes les pièces du niveau.

void ShipLevel::showElevator  ) 
 

Affiche la pièce qui fait partie de l'ascenseur.

void ShipLevel::showOneRoom String  roomName  ) 
 

Affiche la pièce demandée (les autres sont effacées pour gagner en framerate).

void ShipLevel::showOneRoom Room room  ) 
 

Cette fonction affiche la Room demandée, et efface toutes les autres.

Cela permet de gagner du framerate opur l'affichage. Si la pièce à afficher est un Elevator (de ce niveau, ou d'un autre niveau) alors alors on n'efface pas l'ascenseur de ce niveau.


Member Data Documentation

bool ShipLevel::mBlender [protected]
 

Indique si la source du Level est Blender. Auquel cas, il y a une correction d'orientation à faire.

Vector3 ShipLevel::mCamPos [protected]
 

Position initiale de la camera dans ce niveau (debug).

int ShipLevel::mDoorIndex [protected]
 

t_Map ShipLevel::mDoorMap[MAP_SIZE] [protected]
 

Room* ShipLevel::mElevatorRoom [protected]
 

La piece du niveau qui joue le role d'ascensceur.

String ShipLevel::mLevelName [protected]
 

SceneNode* ShipLevel::mLevelNode [protected]
 

SceneNode* ShipLevel::mParentNode [protected]
 

int ShipLevel::mRoomIndex [protected]
 

Room* ShipLevel::mRoomMap[MAP_SIZE] [protected]
 

Le tableau de toutes les Room du niveau.

bool ShipLevel::mSceneLevel [protected]
 

Ce flag indique que le niveau entier est decrit par un fichier DotScene.

SceneManager* ShipLevel::mSceneMgr [protected]
 

bool ShipLevel::mSceneRoom [protected]
 

Ce flag indique que la Room est decrite individuellement par un fichier DotScene.

ShipLevel_XMLparser* ShipLevel::mXMLlevel [protected]
 

Scene_XMLparser* ShipLevel::mXMLscene [protected]
 


The documentation for this class was generated from the following files:
Generated on Mon Mar 27 21:33:16 2006 for Long Forgotten Earth by  doxygen 1.4.6-NO