From b070c9ace7f6eafbc3a8910e5550829314159355 Mon Sep 17 00:00:00 2001 From: Alexander Klingenbeck Date: Fri, 26 May 2023 19:05:59 +0200 Subject: [PATCH] port more examples --- examples/core/core_3d_camera_first_person.js | 14 +--- examples/core/core_3d_camera_free.c | 88 -------------------- examples/core/core_3d_camera_free.js | 77 +++++++++++++++++ readme.md | 1 + 4 files changed, 82 insertions(+), 98 deletions(-) delete mode 100644 examples/core/core_3d_camera_free.c create mode 100644 examples/core/core_3d_camera_free.js diff --git a/examples/core/core_3d_camera_first_person.js b/examples/core/core_3d_camera_first_person.js index 74a33b9..1d2e414 100644 --- a/examples/core/core_3d_camera_first_person.js +++ b/examples/core/core_3d_camera_first_person.js @@ -174,17 +174,11 @@ while (!windowShouldClose()) // Detect window close button or ESC key drawRectangle(600, 5, 195, 100, fade(SKYBLUE, 0.5)); drawRectangleLines(600, 5, 195, 100, BLUE); - drawText("Camera status:", 610, 15, 10, BLACK); - drawText("- Mode: " + (cameraMode == CAMERA_FREE) ? "FREE" : - (cameraMode == CAMERA_FIRST_PERSON) ? "FIRST_PERSON" : - (cameraMode == CAMERA_THIRD_PERSON) ? "THIRD_PERSON" : - (cameraMode == CAMERA_ORBITAL) ? "ORBITAL" : "CUSTOM", 610, 30, 10, BLACK); - drawText("- Projection: " + (camera.projection == CAMERA_PERSPECTIVE) ? "PERSPECTIVE" : - (camera.projection == CAMERA_ORTHOGRAPHIC) ? "ORTHOGRAPHIC" : "CUSTOM", 610, 45, 10, BLACK); - drawText(`- Position: ${camera.position.x}, ${camera.position.y}, ${camera.position.z}`, 610, 60, 10, BLACK); - //DrawText(TextFormat("- Target: (%06.3f, %06.3f, %06.3f)", camera.target.x, camera.target.y, camera.target.z), 610, 75, 10, BLACK); - //DrawText(TextFormat("- Up: (%06.3f, %06.3f, %06.3f)", camera.up.x, camera.up.y, camera.up.z), 610, 90, 10, BLACK); + drawText("Camera status: ", 610, 15, 10, BLACK); + drawText("- Mode: " + cameraMode, 610, 30, 10, BLACK); + drawText("- Projection: " + (camera.projection === CAMERA_PERSPECTIVE) ? "PERSPECTIVE" : + (camera.projection === CAMERA_ORTHOGRAPHIC) ? "ORTHOGRAPHIC" : "CUSTOM", 610, 45, 10, BLACK); endDrawing(); //---------------------------------------------------------------------------------- } diff --git a/examples/core/core_3d_camera_free.c b/examples/core/core_3d_camera_free.c deleted file mode 100644 index 59bd158..0000000 --- a/examples/core/core_3d_camera_free.c +++ /dev/null @@ -1,88 +0,0 @@ -/******************************************************************************************* -* -* raylib [core] example - Initialize 3d camera free -* -* Example originally created with raylib 1.3, last time updated with raylib 1.3 -* -* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, -* BSD-like license that allows static linking with closed source software -* -* Copyright (c) 2015-2023 Ramon Santamaria (@raysan5) -* -********************************************************************************************/ - -#include "raylib.h" - -//------------------------------------------------------------------------------------ -// Program main entry point -//------------------------------------------------------------------------------------ -int main(void) -{ - // Initialization - //-------------------------------------------------------------------------------------- - const int screenWidth = 800; - const int screenHeight = 450; - - InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free"); - - // Define the camera to look into our 3d world - Camera3D camera = { 0 }; - camera.position = (Vector3){ 10.0f, 10.0f, 10.0f }; // Camera position - camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point - camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) - camera.fovy = 45.0f; // Camera field-of-view Y - camera.projection = CAMERA_PERSPECTIVE; // Camera projection type - - Vector3 cubePosition = { 0.0f, 0.0f, 0.0f }; - - DisableCursor(); // Limit cursor to relative movement inside the window - - SetTargetFPS(60); // Set our game to run at 60 frames-per-second - //-------------------------------------------------------------------------------------- - - // Main game loop - while (!WindowShouldClose()) // Detect window close button or ESC key - { - // Update - //---------------------------------------------------------------------------------- - UpdateCamera(&camera, CAMERA_FREE); - - if (IsKeyDown('Z')) camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; - //---------------------------------------------------------------------------------- - - // Draw - //---------------------------------------------------------------------------------- - BeginDrawing(); - - ClearBackground(RAYWHITE); - - BeginMode3D(camera); - - DrawCube(cubePosition, 2.0f, 2.0f, 2.0f, RED); - DrawCubeWires(cubePosition, 2.0f, 2.0f, 2.0f, MAROON); - - DrawGrid(10, 1.0f); - - EndMode3D(); - - DrawRectangle( 10, 10, 320, 133, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines( 10, 10, 320, 133, BLUE); - - DrawText("Free camera default controls:", 20, 20, 10, BLACK); - DrawText("- Mouse Wheel to Zoom in-out", 40, 40, 10, DARKGRAY); - DrawText("- Mouse Wheel Pressed to Pan", 40, 60, 10, DARKGRAY); - DrawText("- Alt + Mouse Wheel Pressed to Rotate", 40, 80, 10, DARKGRAY); - DrawText("- Alt + Ctrl + Mouse Wheel Pressed for Smooth Zoom", 40, 100, 10, DARKGRAY); - DrawText("- Z to zoom to (0, 0, 0)", 40, 120, 10, DARKGRAY); - - EndDrawing(); - //---------------------------------------------------------------------------------- - } - - // De-Initialization - //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context - //-------------------------------------------------------------------------------------- - - return 0; -} \ No newline at end of file diff --git a/examples/core/core_3d_camera_free.js b/examples/core/core_3d_camera_free.js new file mode 100644 index 0000000..ffedc8a --- /dev/null +++ b/examples/core/core_3d_camera_free.js @@ -0,0 +1,77 @@ +/******************************************************************************************* +* +* raylib [core] example - Initialize 3d camera free +* +* Example originally created with raylib 1.3, last time updated with raylib 1.3 +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2015-2023 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ +// Initialization +//-------------------------------------------------------------------------------------- +const screenWidth = 800; +const screenHeight = 450; + +initWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera free"); + +// Define the camera to look into our 3d world (position, target, up vector) +const position = new Vector3(10.0, 10.0, 10.0); // Camera position +const target = new Vector3(0.0, 0.0, 0.0); // Camera looking at point +const up = new Vector3(0.0, 1.0, 0.0); // Camera up vector (rotation towards target) +const fovy = 45.0; // Camera field-of-view Y +const projection = CAMERA_PERSPECTIVE; // Camera projection type +const camera = new Camera3D(position,target, up, fovy, projection); + +const cubePosition = new Vector3(0.0, 0.0, 0.0); + +disableCursor(); // Limit cursor to relative movement inside the window + +setTargetFPS(60); // Set our game to run at 60 frames-per-second +//-------------------------------------------------------------------------------------- + +// Main game loop +while (!windowShouldClose()) // Detect window close button or ESC key +{ + // Update + //---------------------------------------------------------------------------------- + updateCamera(camera, CAMERA_FREE); + + if (isKeyPressed('Z')) camera.target = new Vector3(0.0, 0.0, 0.0); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + beginDrawing(); + + clearBackground(RAYWHITE); + + beginMode3D(camera); + + drawCube(cubePosition, 2.0, 2.0, 2.0, RED); + drawCubeWires(cubePosition, 2.0, 2.0, 2.0, MAROON); + + drawGrid(10, 1.0); + + endMode3D(); + + drawRectangle( 10, 10, 320, 133, fade(SKYBLUE, 0.5)); + drawRectangleLines( 10, 10, 320, 133, BLUE); + + drawText("Free camera default controls:", 20, 20, 10, BLACK); + drawText("- Mouse Wheel to Zoom in-out", 40, 40, 10, DARKGRAY); + drawText("- Mouse Wheel Pressed to Pan", 40, 60, 10, DARKGRAY); + drawText("- Alt + Mouse Wheel Pressed to Rotate", 40, 80, 10, DARKGRAY); + drawText("- Alt + Ctrl + Mouse Wheel Pressed for Smooth Zoom", 40, 100, 10, DARKGRAY); + drawText("- Z to zoom to (0, 0, 0)", 40, 120, 10, DARKGRAY); + + endDrawing(); + //---------------------------------------------------------------------------------- +} + +// De-Initialization +//-------------------------------------------------------------------------------------- +closeWindow(); // Close window and OpenGL context +//-------------------------------------------------------------------------------------- diff --git a/readme.md b/readme.md index b982cac..8531d1e 100644 --- a/readme.md +++ b/readme.md @@ -58,6 +58,7 @@ The following raylib APIs are supported so far (with a few exceptions): - shaders - audio - raymath +- rcamera Similar to including a header in C and for your convenience, all types/functions are provided globally. They are additionally available in a module called 'raylib'