#include "gyroscope.h" #include "game.h" #include "assets.h" #include "world.h" void resetGyroscopePosition(Gyroscope * gyroscope) { float width = GetScreenWidth(); float height = GetScreenHeight(); // Set position on screen. gyroscope->position = (Vector2){ (width / 2.0) - (GYROSCOPE_TEXTURE_SIZE / 2.0), height / 1.8 }; } void initGyroscope(Gyroscope * gyroscope) { resetGyroscopePosition(gyroscope); gyroscope->camera = (Camera3D){ .fovy = 45, .projection = CAMERA_PERSPECTIVE, .position = (Vector3){0.0, 0.0, 3.0}, .target = Vector3Zero(), .up = (Vector3){0.0, 1.0, 0.0} }; gyroscope->texture = LoadRenderTexture( GYROSCOPE_TEXTURE_SIZE, GYROSCOPE_TEXTURE_SIZE ); } void closeGyroscope(Gyroscope * gyroscope) { UnloadRenderTexture(gyroscope->texture); } void drawGyroscope(Game * game, Gyroscope * gyroscope) { Entity * player = getEntityFromWorld(game->world, 0); // Get model Model model = game->assets.models[GYROSCOPE_ASSET]; // Draw this mother fucker. BeginTextureMode(gyroscope->texture); ClearBackground(BLACK); BeginMode3D(gyroscope->camera); // Set transform and draw. model.transform = QuaternionToMatrix(player->rotation); DrawModel(model, Vector3Zero(), 1, WHITE); EndMode3D(); EndTextureMode(); // Draw render texture. DrawTexture( gyroscope->texture.texture, gyroscope->position.x, gyroscope->position.y, WHITE ); // Top to bottom. DrawLineEx( (Vector2){ gyroscope->position.x + (GYROSCOPE_TEXTURE_SIZE / 2.0), gyroscope->position.y, }, (Vector2){ gyroscope->position.x + (GYROSCOPE_TEXTURE_SIZE / 2.0), gyroscope->position.y + GYROSCOPE_TEXTURE_SIZE, }, GYROSCOPE_LINE_THICKNESS, SKYBLUE ); // Left to right. DrawLineEx( (Vector2){ gyroscope->position.x, gyroscope->position.y + (GYROSCOPE_TEXTURE_SIZE / 2.0), }, (Vector2){ gyroscope->position.x + GYROSCOPE_TEXTURE_SIZE, gyroscope->position.y + (GYROSCOPE_TEXTURE_SIZE / 2.0), }, GYROSCOPE_LINE_THICKNESS, YELLOW ); }