From 17ef4e6fd97a619edba37bebfa9432d72cfe5f17 Mon Sep 17 00:00:00 2001 From: "Alexander Klingenbeck (SHS DI SY R&D DEV4)" Date: Tue, 16 May 2023 17:04:59 +0200 Subject: [PATCH] add broken example --- assets/cubicmap.png | Bin 0 -> 164 bytes assets/cubicmap_atlas.png | Bin 0 -> 37160 bytes examples/models_cubicmap.js | 86 ++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 assets/cubicmap.png create mode 100644 assets/cubicmap_atlas.png create mode 100644 examples/models_cubicmap.js diff --git a/assets/cubicmap.png b/assets/cubicmap.png new file mode 100644 index 0000000000000000000000000000000000000000..392dbf2e63e43edccd212954cc5742a3aa62c1f2 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!2~3KB)#GTQrVs^jv*DdlK%YvZ_n(@=&Q>h zX}3wY;dQHlLGPkjtUDG7YaHS@)YFquw8N!A#YuekN!+4D!}*d?uuyC<9u{ N;OXk;vd$@?2>`lcIXD0S literal 0 HcmV?d00001 diff --git a/assets/cubicmap_atlas.png b/assets/cubicmap_atlas.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc404a70b541330b4c1418dae1b790ecb056434 GIT binary patch literal 37160 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 b>;E4B$|lPUU0GMd00000NkvXXu0mjf2K(5M literal 0 HcmV?d00001 diff --git a/examples/models_cubicmap.js b/examples/models_cubicmap.js new file mode 100644 index 0000000..3343687 --- /dev/null +++ b/examples/models_cubicmap.js @@ -0,0 +1,86 @@ +/******************************************************************************************* +* +* raylib [models] example - Cubicmap loading and drawing +* +* Example originally created with raylib 1.8, last time updated with raylib 3.5 +* +* 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 [models] example - cubesmap loading and drawing"); + +// Define the camera to look into our 3d world +const position = new Vector3(16.0, 14.0, 16.0); // Camera position +const target = new Vector3(0.0, 0.0, 0.0); // Camera looking at point +const up = 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 image = loadImage("assets/cubicmap.png"); // Load cubicmap image (RAM) +const cubicmap = loadTextureFromImage(image); // Convert image to texture to display (VRAM) + +const mesh = genMeshCubicmap(image, new Vector3(1.0, 1.0, 1.0)); +const model = loadModelFromMesh(mesh); + +// NOTE: By default each cube is mapped to one part of texture atlas +const texture = loadTexture("assets/cubicmap_atlas.png"); // Load map texture +//model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = texture; // Set map diffuse texture + +const mapPosition = new Vector3(-16.0, 0.0, -8.0); // Set model position + +image = null; // Unload cubesmap image from RAM, already uploaded to VRAM + +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_ORBITAL); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + beginDrawing(); + + clearBackground(RAYWHITE); + + beginMode3D(camera); + + drawModel(model, mapPosition, 1.0, WHITE); + + endMode3D(); + + drawTextureEx(cubicmap, new Vector2(screenWidth - cubicmap.width*4.0 - 20, 20.0), 0.0, 4.0, WHITE); + drawRectangleLines(screenWidth - cubicmap.width*4 - 20, 20, cubicmap.width*4, cubicmap.height*4, GREEN); + + drawText("cubicmap image used to", 658, 90, 10, GRAY); + drawText("generate map 3d model", 658, 104, 10, GRAY); + + drawFPS(10, 10); + + endDrawing(); + //---------------------------------------------------------------------------------- +} + +// De-Initialization +//-------------------------------------------------------------------------------------- +cubicmap = null // Unload cubicmap texture +texture = null // Unload map texture +model = null // Unload map model + +closeWindow(); // Close window and OpenGL context +//-------------------------------------------------------------------------------------- +