89 glm::vec3
offset, glm::vec3 zAxis, glm::vec3 yAxis);
109 void addCommands(VkCommandBuffer commandBuffer, VkPipelineLayout pipelineLayout,
int index);
137 void addCommandsRecursive(VkCommandBuffer commandBuffer, VkPipelineLayout pipelineLayout,
int index);
147 glm::mat4 parentMatrix, glm::mat4 view, glm::mat4 projection);
177 void setPose(
float xrot,
float yrot,
float zrot);
183 void setLimits(glm::vec3 min, glm::vec3 max);
203 const std::string &
getName()
const;
208 const std::vector<GEBalljoint *> &
getChildren()
const;
Macros de depuración para desarrollo.
Declaración de la clase GECylinder.
Declaración de la clase GEGraphicsContext que almacena el contexto gráfico de Vulkan.
Declaración de la estructura GELight para iluminación.
Declaración de la clase GERenderingContext que describe un contexto de renderizado.
Declaración de la clase GESphere que describe una esfera.
Representa una articulación esférica con 3 grados de libertad.
Definition GEBalljoint.h:26
GEBalljoint(float length)
Construye una articulación.
Definition GEBalljoint.cpp:16
GEBalljoint * findChild(const std::string &searchName)
Busca una articulación hija por nombre.
Definition GEBalljoint.cpp:460
void initialize(GEGraphicsContext *gc, GERenderingContext *rc)
Inicializa las piezas de la articulación.
Definition GEBalljoint.cpp:216
void ComputeMatrix()
Calcula la matriz de transformación local.
Definition GEBalljoint.cpp:97
void addChild(GEBalljoint *child)
Añade una articulación hija.
Definition GEBalljoint.cpp:450
void initializeRecursive(GEGraphicsContext *gc, GERenderingContext *rc)
Inicializa recursivamente esta articulación y sus hijas.
Definition GEBalljoint.cpp:246
GLfloat length
Longitud del hueso.
Definition GEBalljoint.h:29
void updateRecursive(GEGraphicsContext *gc, uint32_t index, glm::mat4 parentMatrix, glm::mat4 view, glm::mat4 projection)
Actualiza recursivamente con matriz del padre.
Definition GEBalljoint.cpp:274
const std::vector< GEBalljoint * > & getChildren() const
Obtiene la lista de hijos.
Definition GEBalljoint.cpp:490
void setLight(GELight l)
Asigna las propiedades de la luz.
Definition GEBalljoint.cpp:426
GLfloat angles[3]
Ángulos de rotación (X, Y, Z).
Definition GEBalljoint.h:34
glm::vec3 localZAxis
Eje Z local.
Definition GEBalljoint.h:41
glm::vec3 right
Vector derecha local.
Definition GEBalljoint.h:33
void setLimits(glm::vec3 min, glm::vec3 max)
Asigna los límites de rotación.
Definition GEBalljoint.cpp:392
glm::vec3 dir
Dirección del hueso.
Definition GEBalljoint.h:31
glm::mat4 getWorldMatrix() const
Obtiene la matriz mundo.
Definition GEBalljoint.cpp:499
void addCommandsRecursive(VkCommandBuffer commandBuffer, VkPipelineLayout pipelineLayout, int index)
Añade comandos recursivamente.
Definition GEBalljoint.cpp:414
GESphere * joint
Esfera que representa la articulación.
Definition GEBalljoint.h:35
glm::vec3 offset
Desplazamiento respecto al padre.
Definition GEBalljoint.h:40
std::string name
Nombre de la articulación.
Definition GEBalljoint.h:39
glm::mat4 worldMatrix
Matriz de transformación mundo.
Definition GEBalljoint.h:44
struct GEBalljoint::Limits limits
Límites de rotación de esta articulación.
void setLightRecursive(GELight l)
Asigna la luz recursivamente.
Definition GEBalljoint.cpp:438
void setOrientation(glm::vec3 nDir, glm::vec3 nUp)
Asigna la orientación de la articulación.
Definition GEBalljoint.cpp:336
void setLocation(glm::vec3 loc)
Asigna la posición de la articulación.
Definition GEBalljoint.cpp:325
glm::vec3 up
Vector arriba local.
Definition GEBalljoint.h:32
void addCommands(VkCommandBuffer commandBuffer, VkPipelineLayout pipelineLayout, int index)
Añade los comandos de dibujo.
Definition GEBalljoint.cpp:402
glm::mat4 getBoneEndMatrix() const
Obtiene la matriz en el extremo del hueso.
Definition GEBalljoint.cpp:508
const std::string & getName() const
Obtiene el nombre de la articulación.
Definition GEBalljoint.cpp:481
void destroyRecursive(GEGraphicsContext *gc)
Destruye recursivamente esta articulación y sus hijas.
Definition GEBalljoint.cpp:310
void destroy(GEGraphicsContext *gc)
Destruye los buffers de las piezas.
Definition GEBalljoint.cpp:291
GECylinder * bone
Cilindro que representa el hueso.
Definition GEBalljoint.h:36
std::vector< GEBalljoint * > children
Articulaciones hijas.
Definition GEBalljoint.h:43
void setPose(float xrot, float yrot, float zrot)
Asigna la rotación de la articulación (respetando límites).
Definition GEBalljoint.cpp:350
void update(GEGraphicsContext *gc, uint32_t index, glm::mat4 view, glm::mat4 projection)
Actualiza las variables uniformes.
Definition GEBalljoint.cpp:262
glm::vec3 location
Posición de la articulación.
Definition GEBalljoint.h:30
glm::vec3 localYAxis
Eje Y local.
Definition GEBalljoint.h:42
Clase que describe un cilindro.
Definition GECylinder.h:15
Clase que almacena el contexto gráfico de Vulkan (instancia y dispositivo).
Definition GEGraphicsContext.h:17
Clase que describe un contexto de renderizado.
Definition GERenderingContext.h:20
Clase que describe una esfera.
Definition GESphere.h:15
Estructura que almacena los límites de rotación de la articulación.
Definition GEBalljoint.h:51
glm::vec3 min
Límites mínimos de rotación (X, Y, Z).
Definition GEBalljoint.h:52
bool enabled
Indica si los límites están activos.
Definition GEBalljoint.h:54
glm::vec3 max
Límites máximos de rotación (X, Y, Z).
Definition GEBalljoint.h:53
Estructura que describe una fuente de luz direccional.
Definition GELight.h:15