Herramientas de usuario

Herramientas del sitio


rf_process

RF_Process

Esta clase es la base del framework. Todas las clases que quieran integrarse en el pipeline deben heredar de ella.

Atributos

Nombre Tipo Descripción
id string Identificador del proceso
father string Identificador del proceso padre
signal unsigned int Estado en el que se encuentra el proceso
type string Tipo de proceso
transform Transform2D<float,float,float> Posición, rotación y escala del proceso
zLayer int Altura de capa en la que se posiciona el proceso
flipType SDL_RendererFlip Flag de renderizado de SDL
window RF_Window* Puntero a la ventana en la que se renderiza el proceso

Funciones

Las únicas funciones que contiene RF_Process son las que lo integran con el pipeline, las cuales son todas virtuales.

Nombre Descripción
Start Función que se invoca al instanciarse el objeto
Update Función que invoca tantas veces como sea posible entre fotograma y fotograma
FixedUpdate Función que se invoca únicamente una vez por fotograma
Draw Función que se invoca durante el proceso de renderizado, antes de ordenar los procesos para dicha tarea
LateDraw Función que se invoca durante el proceso de renderizado, después de ordenar los procesos para dicha tarea pero antes de renderizarlos
AfterDraw Función que se invoca durante el proceso de renderizado, tras renderizar el proceso
Dispose Función que se invoca al destruir el proceso
Opcionalmente, al invocar al constructor de RF_Process en la declaración del constructor que lo hereda, se puede porporcionar un string que representa el type del proceso. Si no se proporciona ningun type, éste tomará el valor “null”.

Ejemplos

class exeProcess : public RF_Process
{
    public:
        exeProcess():RF_Process("exeProcess"){}
        virtual ~exeProcess();
 
        virtual void Update()
        {
            if(RF_Engine::instance->key[_esc] || RF_Engine::instance->key[_close_window])
            {
                RF_Engine::instance->isRunning(false);
            }
        }
}

rf_process.h

class RF_Process
{
  public:
    RF_Process(string _type="null", RF_Window *_window = nullptr);
    virtual ~RF_Process();
 
    virtual void Start();
    virtual void Update();
    virtual void FixedUpdate();
    virtual void Draw();
    virtual void LateDraw();
    virtual void AfterDraw();
    virtual void Dispose();
 
    /**Propiedades******/
      string id, father;
      unsigned int signal = RF_Structs::S_AWAKE;
      string type="";
      SDL_Surface *graph;
      RF_Structs::Transform2D<float, float, float> transform;
      int zLayer = -1;
      SDL_RendererFlip flipType = FLIP_NONE;
    /*******************/
 
    RF_Window *window;
 
    bool operator<(const RF_Process* p) const;
    SDL_Rect getDimensions();
    RF_Structs::Vector2<int> checkPoint(RF_Structs::Vector2<int> p);
    RF_Structs::Vector2<int> checkPoint(int p_x, int p_y);
};
rf_process.txt · Última modificación: 2023/08/07 06:54 por yawin