API - SeriousGamesStudio/Serious-Train-2-3D GitHub Wiki

API

Aquí se expone la API de los diferentes objetos con parámetros y descripción de funcionalidad si es necesario

Game

  • start(): Inicia el juego. Devuelve false si ha habido un error.
  • stop(): libera los recursos utilizados y termina la ejecución de la aplicación.

GameManager

  • init(): Inicializa todas la variables, así como la primera escena.
  • tick(): Es llamado por Game. Transmite el tick de juego a la escena activa.
  • pushScene(Scene*): cambia la escena actual a la pasada por parámetro, guardando la anterior.
  • popScene(): destruye la escena actual.
  • changeScene(Scene*): reemplaza la escena actual por la pasado por parámetro.

InputManager

Se encarga de todas las funciones del input, es decir, de capturar el teclado y raton, se basa en la librería OIS, ya que tiene compatibilidad con la ventana de ogre, y su implementación es bastante sencilla.

Funciones

void initialise(Ogre::RenderWindow * Window)

Inicializa todas las cosas necesarias para detectar ratón y teclado. Solo se usa una vez, ya que es un singleton y no se tiene que inicializar más que una vez. Forma de uso.

// al iniciar el programa y siempre despues de iniciar el GraphicsManager
Ogre::RenderWindow * Window = graphicsManager.getWindow();
// Necesita la ventana de Ogre para para poder iniciar.
inputManager->initialise(Window);

void capture(void)

Actualiza la situacion del teclado y del ratón. El se encarga de llamar a los listeners de cada uno. Su uso correcto es en el ciclo de juego antes de la actualización de la escena. Forma de uso:

//simple
inputManager->capture();

void addKeyListener(OIS::KeyListener *keyListener, const std::string& instanceName)

Añade un listener de teclado, en el cual puedes poner un nombre de la instancia. El uso e implementacion de la clase OIS::KeyListener se explicará más adelante. Esta función cuanto menos la uses de forma directa mejor. Forma de uso:

//imaginando que esta clase hija de la clase OIS::KeyListener
KeyComponent * kC = new KeyComponent(/* random params*/);

inputManager->addKeyListener(kC,"keyListener");

void addMouseListener(OIS::MouseListener *mouseListener, const std::string& instanceName)

Añade un listener de ratón, en el cual puedes poner un nombre de la instancia. El uso e implementacion de la clase OIS::MouseListener se explicará más adelante. Esta función cuanto menos la uses de forma directa mejor. Forma de uso:

//imaginando que esta clase hija de la clase OIS::KeyListener
MouseComponent* mC = new MouseComponent(/* random params*/);

inputManager->addMouseListener(mC,"mouseListener");

void removeKeyListener(OIS::KeyListener *keyListener)

Elimina un listener de teclado, usando la propia instancia. Uso recomendable en la destructora del listener. Forma de uso:

// suponiendo 2 cosas, que esto es dentro de un objeto que es o hereda de uno OIS::Keylistener, 
// y guardamos un puntero del InputManager
inputManager->removeKeyListener(this);

void removeKeyListener(const std::string& instanceName)

Elimina un listener de teclado, usando su nombre. Este se evitara usarlo a toda costa ya que no guradaremos el nombre del listener. Su forma de uso es muy parecida al anterior método.

void removeMouseListener(OIS::MouseListener *mouseListener)

Elimina un listener de Mouse, usando la propia instancia. Uso recomendable en la destructora del listener. Forma de uso:

// suponiendo 2 cosas, que esto es dentro de un objeto que es un OIS::MouseListener o hereda de uno, 
// y guardamos un puntero del InputManager
inputManager->removeMouseListener(this);

void removeMouseListener(const std::string& instanceName)

Elimina un listener de teclado, usando su nombre. Este se evitara usarlo a toda costa ya que no guradaremos el nombre del listener. Su forma de uso es muy parecida al anterior método.

void removeAllListeners(void)

Elimina todos los listeners. Forma de uso:

inputManager->removeAllListeners();

void removeAllKeyListeners(void)

Elimina todos los listeners del teclado. Forma de uso:

inputManager->removeAllKeyListeners();

void removeAllMouseListeners(void)

Elimina todos los listeners del ratón. Forma de uso:

inputManager->removeAllMouseListeners();

OIS::Keyboard * getKeyboard(void)

Devuelve la situacion del teclado. Con esto podremos acceder a las teclas pulsadas y otras cosas, para mas informacion consultar la documentación de OIS. Forma de uso:

// Para obtener si una tecla esta pulsada de forma directa. concretamente la tecla A
if(inputManager->getKeyboard()->isKeyDown(OIS::KeyCode::A))
  doSomething();
// OIS::KeyCode es un enumerado donde estan las identificaciones de las teclas

OIS::Mouse * getMouse(void)

Devuelve la situacion del ratón. Con esto podremos acceder a la posicion del ratón, botones pulsados y otras cosas, para mas informacion consultar la documentación de OIS. Forma de uso:

// Para obtener si un boton esta pulsado de forma directa. concretamente el botón izquierdo del raton.
if(inputManager->getMouse()->getMouseState().buttonDown(OIS::MouseButtonID::MB_Left))
  doSomething();
// OIS::MouseButtonID es un enumerado donde estan las identificaciones de las botones del ratón,
// tiene un total de 8 botones

OIS::KeyListener

Es una clase abstracta pura propia de OIS que es como se muestra aquí

class KeyListener
	{
	public:
		virtual ~KeyListener() {}
		virtual bool keyPressed(const KeyEvent &arg) = 0;
		virtual bool keyReleased(const KeyEvent &arg) = 0;
};

Es necesario declarar keyPressed y keyReleased para que al menos el listener compile.

OIS::MouseListener

Es una clase abstracta pura propia de OIS que es como se muestra aquí

class MouseListener
	{
	public:
		virtual ~MouseListener() {}
		virtual bool mouseMoved( const MouseEvent &arg ) = 0;
		virtual bool mousePressed( const MouseEvent &arg, MouseButtonID id ) = 0;
		virtual bool mouseReleased( const MouseEvent &arg, MouseButtonID id ) = 0;
};

Es necesario declarar mouseMoved, mousePressed y mouseRealeased para que al menos el listener compile.

SoundManager

soniquetes y esas cosas

Scene

  • tick(): es llamado por el GameManger cada tick del juego y se encarga de llamar el tick() de cada entidad de la escena.
  • addListener(MsgId, Component*): suscribe un componente a un tipo de mensaje.
  • removeListener(MsgId, Component*): desuscribe un componente a un tipo de mensaje.
  • reciveMsg(Msg_Base*): introduce el mensaje a la cola de mensajes.
  • whoIs(EntityID || string): devuelve un puntero a la entidad identificada por alguno de los parámetros.
  • getNameOf(EntityID): devuelve el nombre de la entidad con ese identificador.
  • getIdOf(string): devuelve el identificador de la entidad con ese nombre.
  • getComponentOf(EntityId || string): devuelve el componente de tipo T de la entidad identificada por parámetro.

Entity

  • tick(): es llamado por la escena a la que pertenece cada tick del juego. Llama al Update and Late Update de cada componente que lo componga.
  • addComponent(Component*): añade un componente al vector de componentes.
  • reciveMsg(Msg_Base* msg): añade el mensaje a la cola de mensajes de la entidad.
  • getId():devuelve el identificador de la entidad.
  • getName(): devuelve el nombre de la entidad.
  • getScene(): devuelve un puntero a la escena a la que pertenece.

Component

  • virtual awake(): Método llamado justo después de inicializarse el componente.
  • virtual start(): Método llamado justo después de awake.
  • virtual update(): Método llamado cada tick del juego.
  • virtual lateUpdate(): Método llamado cada tick del juego. Después del Update.
  • virtual listen(Msg_Base * msg): Método que se encarga de decidir que hacer por cada mensaje al que se haya suscrito el componente.
  • isEnable(): devuelve si el componente está habilitado o no.
  • enable(): habilita el componente.
  • disable(): deshabilita el componente.
  • getEntity(): devuelve un puntero a la entidad propietaria del componente.
  • protected sendMsg(Msg_Base* msg):envía mensajes a los destinatarios apropiados.

ObjectsFactory

  • create(ObjectType, vector<void*>): crea y devuelve un puntero a una entidad pasada por parámetro.
⚠️ **GitHub.com Fallback** ⚠️