Kohi Game Engine
ktransform_system.h File Reference

Go to the source code of this file.

Data Structures

struct  ktransform_system_config
 

Macros

#define KRENDERBUFFER_NAME_TRANSFORMS_GLOBAL   "Kohi.StorageBuffer.TransformsGlobal"
 

Typedefs

typedef struct ktransform_system_config ktransform_system_config
 

Functions

b8 ktransform_system_initialize (u64 *memory_requirement, void *state, void *config)
 
void ktransform_system_shutdown (void *state)
 
b8 ktransform_system_update (struct ktransform_system_state *state, struct frame_data *p_frame_data)
 
KAPI ktransform ktransform_create (u64 user)
 Creates and returns a new ktransform, using a zero vector for position, identity quaternion for rotation, and a one vector for scale. Not marked dirty by default. More...
 
KAPI ktransform ktransform_clone (ktransform original, u64 user)
 Creates and returns a new ktransform, using the position, rotation and scale of the provided original transform. Not marked dirty by default. More...
 
KAPI void ktransform_mark_dirty (ktransform transform)
 
KAPI ktransform ktransform_from_position (vec3 position, u64 user)
 Creates a ktransform from the given position. Uses a zero rotation and a one scale. More...
 
KAPI ktransform ktransform_from_rotation (quat rotation, u64 user)
 Creates a ktransform from the given rotation. Uses a zero position and a one scale. More...
 
KAPI ktransform ktransform_from_position_rotation (vec3 position, quat rotation, u64 user)
 Creates a ktransform from the given position and rotation. Uses a one scale. More...
 
KAPI ktransform ktransform_from_position_rotation_scale (vec3 position, quat rotation, vec3 scale, u64 user)
 Creates a ktransform from the given position, rotation and scale. More...
 
KAPI ktransform ktransform_from_matrix (mat4 m, u64 user)
 Creates a ktransform from the provided matrix. More...
 
KAPI void ktransform_destroy (ktransform *t)
 Destroys the ktransform with the given handle, and frees the handle. More...
 
KAPI b8 ktransform_is_identity (ktransform t)
 Indicates if the provided transform is an identity transform (i.e. zero position, identity rotation, one-scale). More...
 
KAPI b8 ktransform_parent_set (ktransform t, ktransform parent)
 
KAPI ktransform ktransform_parent_get (ktransform t)
 
KAPI vec3 ktransform_position_get (ktransform t)
 Returns the local position of the given ktransform. More...
 
KAPI vec3 ktransform_world_position_get (ktransform t)
 Returns the world position of the given ktransform. More...
 
KAPI void ktransform_position_set (ktransform t, vec3 position)
 Sets the position of the given ktransform. More...
 
KAPI void ktransform_translate (ktransform t, vec3 translation)
 Applies a translation to the given ktransform. Not the same as setting. More...
 
KAPI quat ktransform_rotation_get (ktransform t)
 Returns the rotation of the given ktransform. More...
 
KAPI quat ktransform_world_rotation_get (ktransform t)
 Returns the world rotation of the given ktransform. More...
 
KAPI void ktransform_rotation_set (ktransform t, quat rotation)
 Sets the rotation of the given ktransform. More...
 
KAPI void ktransform_rotate (ktransform t, quat rotation)
 Applies a rotation to the given ktransform. Not the same as setting. More...
 
KAPI vec3 ktransform_scale_get (ktransform t)
 Returns the scale of the given ktransform. More...
 
KAPI vec3 ktransform_world_scale_get (ktransform t)
 Returns the world scale of the given ktransform. More...
 
KAPI void ktransform_scale_set (ktransform t, vec3 scale)
 Sets the scale of the given ktransform. More...
 
KAPI void ktransform_scale (ktransform t, vec3 scale)
 Applies a scale to the given ktransform. Not the same as setting. More...
 
KAPI void ktransform_position_rotation_set (ktransform t, vec3 position, quat rotation)
 Sets the position and rotation of the given ktransform. More...
 
KAPI void ktransform_position_rotation_scale_set (ktransform t, vec3 position, quat rotation, vec3 scale)
 Sets the position, rotation and scale of the given ktransform. More...
 
KAPI void ktransform_translate_rotate (ktransform t, vec3 translation, quat rotation)
 Applies translation and rotation to the given ktransform. More...
 
KAPI void ktransform_calculate_local (ktransform t)
 
KAPI mat4 ktransform_local_get (ktransform t)
 Retrieves the local ktransformation matrix from the provided ktransform. Automatically recalculates the matrix if it is dirty. Otherwise, the already calculated one is returned. More...
 
KAPI mat4 ktransform_world_get (ktransform t)
 Obtains the world matrix of the given ktransform. More...
 
KAPI u64 ktransform_user_get (ktransform t)
 
KAPI void ktransform_user_set (ktransform t, u64 user)
 
KAPI const char * ktransform_to_string (ktransform t)
 Returns a string representation of the ktransform pointed to by the given handle. More...
 
KAPI b8 ktransform_from_string (const char *str, u64 user, ktransform *out_ktransform)
 Creates an ktransform from the given string. More...
 

Macro Definition Documentation

◆ KRENDERBUFFER_NAME_TRANSFORMS_GLOBAL

#define KRENDERBUFFER_NAME_TRANSFORMS_GLOBAL   "Kohi.StorageBuffer.TransformsGlobal"

Typedef Documentation

◆ ktransform_system_config

Function Documentation

◆ ktransform_calculate_local()

KAPI void ktransform_calculate_local ( ktransform  t)

Recalculates the local matrix for the transform with the given handle.

◆ ktransform_clone()

KAPI ktransform ktransform_clone ( ktransform  original,
u64  user 
)

Creates and returns a new ktransform, using the position, rotation and scale of the provided original transform. Not marked dirty by default.

Parameters
originalThe transform to be cloned.
userUser data, typically a handle or pointer to something for reverse lookups.
Returns
A handle to the new ktransform.

◆ ktransform_create()

KAPI ktransform ktransform_create ( u64  user)

Creates and returns a new ktransform, using a zero vector for position, identity quaternion for rotation, and a one vector for scale. Not marked dirty by default.

Parameters
userUser data, typically a handle or pointer to something for reverse lookups.
Returns
A handle to the new ktransform.

◆ ktransform_destroy()

KAPI void ktransform_destroy ( ktransform t)

Destroys the ktransform with the given handle, and frees the handle.

Parameters
tA pointer to a handle to the transform to be destroyed. The handle itself is also invalidated.

◆ ktransform_from_matrix()

KAPI ktransform ktransform_from_matrix ( mat4  m,
u64  user 
)

Creates a ktransform from the provided matrix.

Parameters
mThe matrix to decompose and extract a transform from.
userUser data, typically a handle or pointer to something for reverse lookups.
Returns
A handle to the new ktransform.

◆ ktransform_from_position()

KAPI ktransform ktransform_from_position ( vec3  position,
u64  user 
)

Creates a ktransform from the given position. Uses a zero rotation and a one scale.

Parameters
positionThe position to be used.
userUser data, typically a handle or pointer to something for reverse lookups.
Returns
A handle to the new ktransform.

◆ ktransform_from_position_rotation()

KAPI ktransform ktransform_from_position_rotation ( vec3  position,
quat  rotation,
u64  user 
)

Creates a ktransform from the given position and rotation. Uses a one scale.

Parameters
positionThe position to be used.
rotationThe rotation to be used.
userUser data, typically a handle or pointer to something for reverse lookups.
Returns
A handle to the new ktransform.

◆ ktransform_from_position_rotation_scale()

KAPI ktransform ktransform_from_position_rotation_scale ( vec3  position,
quat  rotation,
vec3  scale,
u64  user 
)

Creates a ktransform from the given position, rotation and scale.

Parameters
positionThe position to be used.
rotationThe rotation to be used.
scaleThe scale to be used.
userUser data, typically a handle or pointer to something for reverse lookups.
Returns
A handle to the new ktransform.

◆ ktransform_from_rotation()

KAPI ktransform ktransform_from_rotation ( quat  rotation,
u64  user 
)

Creates a ktransform from the given rotation. Uses a zero position and a one scale.

Parameters
rotationThe rotation to be used.
userUser data, typically a handle or pointer to something for reverse lookups.
Returns
A handle to the new ktransform.

◆ ktransform_from_string()

KAPI b8 ktransform_from_string ( const char *  str,
u64  user,
ktransform out_ktransform 
)

Creates an ktransform from the given string.

Parameters
strThe string from which to create the ktransform. Should be either 'x y z qx qy qz qw sx sy sz' (quaternion rotation) OR 'x y z ex ey ez sx sy sz' (euler rotation)
userUser data, typically a handle or pointer to something for reverse lookups.
out_ktransformA pointer to hold the handle to the newly created ktransform.
Returns
True on success; otherwise false.

◆ ktransform_is_identity()

KAPI b8 ktransform_is_identity ( ktransform  t)

Indicates if the provided transform is an identity transform (i.e. zero position, identity rotation, one-scale).

Parameters
tA handle to the transform to be analyzed.
Returns
True if the transform is identity; otherwise false.

◆ ktransform_local_get()

KAPI mat4 ktransform_local_get ( ktransform  t)

Retrieves the local ktransformation matrix from the provided ktransform. Automatically recalculates the matrix if it is dirty. Otherwise, the already calculated one is returned.

Parameters
tA handle to the ktransform whose matrix to retrieve.
Returns
A copy of the local ktransformation matrix.

◆ ktransform_mark_dirty()

KAPI void ktransform_mark_dirty ( ktransform  transform)

Forces the transform to be dirty, thus forcing a recalculation on the next update.

Parameters
transformThe transform to flag as dirty.

◆ ktransform_parent_get()

KAPI ktransform ktransform_parent_get ( ktransform  t)

◆ ktransform_parent_set()

KAPI b8 ktransform_parent_set ( ktransform  t,
ktransform  parent 
)

◆ ktransform_position_get()

KAPI vec3 ktransform_position_get ( ktransform  t)

Returns the local position of the given ktransform.

Parameters
tA handle whose position to get.
Returns
A copy of the position.

◆ ktransform_position_rotation_scale_set()

KAPI void ktransform_position_rotation_scale_set ( ktransform  t,
vec3  position,
quat  rotation,
vec3  scale 
)

Sets the position, rotation and scale of the given ktransform.

Parameters
tA handle to the ktransform to be updated.
positionThe position to be set.
rotationThe rotation to be set.
scaleThe scale to be set.

◆ ktransform_position_rotation_set()

KAPI void ktransform_position_rotation_set ( ktransform  t,
vec3  position,
quat  rotation 
)

Sets the position and rotation of the given ktransform.

Parameters
tA handle to the ktransform to be updated.
positionThe position to be set.
rotationThe rotation to be set.

◆ ktransform_position_set()

KAPI void ktransform_position_set ( ktransform  t,
vec3  position 
)

Sets the position of the given ktransform.

Parameters
tA handle to the ktransform to be updated.
positionThe position to be set.

◆ ktransform_rotate()

KAPI void ktransform_rotate ( ktransform  t,
quat  rotation 
)

Applies a rotation to the given ktransform. Not the same as setting.

Parameters
tA handle to the ktransform to be updated.
rotationThe rotation to be applied.

◆ ktransform_rotation_get()

KAPI quat ktransform_rotation_get ( ktransform  t)

Returns the rotation of the given ktransform.

Parameters
tA handle whose rotation to get.
Returns
A copy of the rotation.

◆ ktransform_rotation_set()

KAPI void ktransform_rotation_set ( ktransform  t,
quat  rotation 
)

Sets the rotation of the given ktransform.

Parameters
tA handle to the ktransform to be updated.
rotationThe rotation to be set.

◆ ktransform_scale()

KAPI void ktransform_scale ( ktransform  t,
vec3  scale 
)

Applies a scale to the given ktransform. Not the same as setting.

Parameters
tA handle to the ktransform to be updated.
scaleThe scale to be applied.

◆ ktransform_scale_get()

KAPI vec3 ktransform_scale_get ( ktransform  t)

Returns the scale of the given ktransform.

Parameters
tA handle whose scale to get.
Returns
A copy of the scale.

◆ ktransform_scale_set()

KAPI void ktransform_scale_set ( ktransform  t,
vec3  scale 
)

Sets the scale of the given ktransform.

Parameters
tA handle to the ktransform to be updated.
scaleThe scale to be set.

◆ ktransform_system_initialize()

b8 ktransform_system_initialize ( u64 memory_requirement,
void *  state,
void *  config 
)

◆ ktransform_system_shutdown()

void ktransform_system_shutdown ( void *  state)

◆ ktransform_system_update()

b8 ktransform_system_update ( struct ktransform_system_state *  state,
struct frame_data p_frame_data 
)

◆ ktransform_to_string()

KAPI const char* ktransform_to_string ( ktransform  t)

Returns a string representation of the ktransform pointed to by the given handle.

Parameters
tA handle to the ktransform to retrieve as a string.
Returns
The ktransform in string format.

◆ ktransform_translate()

KAPI void ktransform_translate ( ktransform  t,
vec3  translation 
)

Applies a translation to the given ktransform. Not the same as setting.

Parameters
tA handle to the ktransform to be updated.
translationThe translation to be applied.

◆ ktransform_translate_rotate()

KAPI void ktransform_translate_rotate ( ktransform  t,
vec3  translation,
quat  rotation 
)

Applies translation and rotation to the given ktransform.

Parameters
tA handle to the ktransform to be updated.
translationThe translation to be applied.
rotationThe rotation to be applied.
Returns
KAPI

◆ ktransform_user_get()

KAPI u64 ktransform_user_get ( ktransform  t)

◆ ktransform_user_set()

KAPI void ktransform_user_set ( ktransform  t,
u64  user 
)

◆ ktransform_world_get()

KAPI mat4 ktransform_world_get ( ktransform  t)

Obtains the world matrix of the given ktransform.

Parameters
tA handle to the ktransform whose world matrix to retrieve.
Returns
A copy of the world matrix.

◆ ktransform_world_position_get()

KAPI vec3 ktransform_world_position_get ( ktransform  t)

Returns the world position of the given ktransform.

Parameters
tA handle whose position to get.
Returns
A copy of the position.

◆ ktransform_world_rotation_get()

KAPI quat ktransform_world_rotation_get ( ktransform  t)

Returns the world rotation of the given ktransform.

Parameters
tA handle whose world rotation to get.
Returns
A copy of the world rotation.

◆ ktransform_world_scale_get()

KAPI vec3 ktransform_world_scale_get ( ktransform  t)

Returns the world scale of the given ktransform.

Parameters
tA handle whose scale to get.
Returns
A copy of the scale.