====== 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 | [[RF_Signal | Estado]] en el que se encuentra el proceso | | type | string | Tipo de proceso | | transform | [[Transform2D | Transform2D]] | 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 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 checkPoint(RF_Structs::Vector2 p); RF_Structs::Vector2 checkPoint(int p_x, int p_y); };