API - SeriousGamesStudio/Serious-Train-2-3D GitHub Wiki
Aquí se expone la API de los diferentes objetos con parámetros y descripción de funcionalidad si es necesario
- 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.
- 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.
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.
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);
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();
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");
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");
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);
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.
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);
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.
Elimina todos los listeners. Forma de uso:
inputManager->removeAllListeners();
Elimina todos los listeners del teclado. Forma de uso:
inputManager->removeAllKeyListeners();
Elimina todos los listeners del ratón. Forma de uso:
inputManager->removeAllMouseListeners();
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
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
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.
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.
soniquetes y esas cosas
- 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.
- 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.
- 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.
- create(ObjectType, vector<void*>): crea y devuelve un puntero a una entidad pasada por parámetro.