/
Zamar_Terrier
/
TigorEngine
Обзор
Документация
Войти
/
Zamar_Terrier
/
TigorEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Core/e_transform.c
184 строки
4 KB
Zamar_Terrier
cheackpoint
06 авг 2026, 18:41
06 авг 2026, 18:41
716c2d7
Код
Авторство
О чём код?
#include "Core/e_transform.h" #include "Tools/e_math.h" #include "Objects/gameObject2D.h" #include "Objects/gameObject3D.h" #include "Data/e_resource_data.h" #include "Data/e_resource_engine.h" extern TEngine engine; void Transform2DInit(Transform2D *transform) { memset(transform, 0, sizeof(Transform2D)); transform->scale.x = engine.width / 10; transform->scale.y = engine.height / 10; transform->img.scale.x = 1; transform->img.scale.y = 1; transform->scaleOrig.x = engine.width; transform->scaleOrig.y = engine.height; } void Transform3DInit(Transform3D *transform) { memset(transform, 0, sizeof(Transform3D)); transform->scale.x = 1; transform->scale.y = 1; transform->scale.z = 1; transform->img.scale.x = 1; transform->img.scale.y = 1; } // 2D Transforms void Transform2DSetPosition(GameObject2D *go, float x, float y) { go->transform.positionOrig.x = x; go->transform.positionOrig.y = y; go->transform.position.x = x; go->transform.position.y = y; } void Transform2DReposition(GameObject2D *go) { go->transform.position.x = go->transform.positionOrig.x; go->transform.position.y = go->transform.positionOrig.y; } vec2 Transform2DGetPosition(GameObject2D *go) { return go->transform.position; } void Transform2DSetImageOffset(GameObject2D *go, float x, float y) { go->transform.img.offset.x = x; go->transform.img.offset.y = y; } vec2 Transform2DGetImageOffset(GameObject2D *go) { vec2 offset; offset.x = go->transform.img.offset.x; offset.y = go->transform.img.offset.y; return offset; } void Transform2DSetScale(GameObject2D *go, float x, float y) { go->transform.scaleOrig.x = x; go->transform.scaleOrig.y = y; go->transform.scale.x = x; go->transform.scale.y = y; } void Transform2DRescale(GameObject2D *go) { go->transform.scale.x = go->transform.scaleOrig.x; go->transform.scale.y = go->transform.scaleOrig.y; } vec2 Transform2DGetScale(GameObject2D *go) { vec2 size; size.x = go->transform.scale.x; size.y = go->transform.scale.y; return size; } void Transform2DSetRotation(GameObject2D *go, float angle) { angle = fmodf(angle, 360.0f); if (angle < 0.0f) angle += 360.0f; go->transform.rotation = angle; } float Transform2DGetRotation(GameObject2D *go) { return go->transform.rotation; } // 3D Transforms void Transform3DSetPositionT(Transform3D *transform, float x, float y, float z) { transform->position.x = x; transform->position.y = y; transform->position.z = z; } void Transform3DSetPosition(GameObject3D *go, float x, float y, float z) { go->transform.position.x = x; go->transform.position.y = y; go->transform.position.z = z; } vec3 Transform3DGetPosition(GameObject3D *go) { return go->transform.position; } void Transform3DSetScaleT(Transform3D *transform, float x, float y, float z) { transform->scale.x = x; transform->scale.y = y; transform->scale.z = z; } void Transform3DSetScale(GameObject3D *go, float x, float y, float z) { go->transform.scale.x = x; go->transform.scale.y = y; go->transform.scale.z = z; } vec3 Transform3DGetScale(GameObject3D *go) { return go->transform.scale; } void Transform3DSetRotationT(Transform3D *transform, float x, float y, float z) { transform->rotation.x = x; transform->rotation.y = y; transform->rotation.z = z; } void Transform3DSetRotation(GameObject3D *go, float x, float y, float z) { x = x > 360 ? 0 : x; x = x < -360 ? 0 : x; y = y > 360 ? 0 : y; y = y < -360 ? 0 : y; z = z > 360 ? 0 : z; z = z < -360 ? 0 : z; go->transform.rotation.x = x; go->transform.rotation.y = y; go->transform.rotation.z = z; } vec3 Transform3DGetRotation(GameObject3D *go) { return go->transform.rotation; }