You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.4 KiB
40 lines
1.4 KiB
#ifndef _transform_H
|
|
#define _transform_H
|
|
|
|
#include "linmath.h"
|
|
|
|
enum Transform_Space { TS_LOCAL, TS_PARENT, TS_WORLD};
|
|
|
|
struct Transform
|
|
{
|
|
int node;
|
|
vec3 position;
|
|
vec3 scale;
|
|
quat rotation;
|
|
mat4 trans_mat;
|
|
};
|
|
|
|
struct Transform* transform_get(int index);
|
|
void transform_remove(int index);
|
|
void transform_init(void);
|
|
void transform_cleanup(void);
|
|
int transform_create(int node);
|
|
void transform_translate(struct Transform* transform, vec3* amount, enum Transform_Space space);
|
|
void transform_rotate(struct Transform* transform,
|
|
vec3* axis,
|
|
float angle,
|
|
enum Transform_Space space);
|
|
void transform_scale(struct Transform* transform, vec3* scale);
|
|
void transform_set_position(struct Transform* transform, vec3* new_position);
|
|
void transform_get_forward(struct Transform* transform, vec3* res);
|
|
void transform_get_lookat(struct Transform* transform, vec3* res);
|
|
void transform_get_up(struct Transform* transform, vec3* res);
|
|
void transform_get_right(struct Transform* transform, vec3* res);
|
|
void transform_update_transmat(struct Transform* transform);
|
|
void transform_get_absolute_pos(struct Transform* transform, vec3* res);
|
|
void transform_get_absolute_lookat(struct Transform* transform, vec3* res);
|
|
void transform_get_absolute_up(struct Transform* transform, vec3* res);
|
|
void transform_get_absolute_rot(struct Transform* transform, quat* res);
|
|
void transform_get_absolute_right(struct Transform* transform, vec3* res);
|
|
|
|
#endif
|
|
|