From dfac74ffa7f2f24516ec18a3fa6345a2d238f247 Mon Sep 17 00:00:00 2001 From: Philip Shenk Date: Fri, 21 Jan 2022 02:53:25 -0500 Subject: [PATCH] updated VSCode project to work with latest raylib makefile and 'working for web' instructions (#2296) --- projects/VSCode/Makefile | 15 +++--- projects/VSCode/main.c | 85 ++++++++++++++++++++----------- projects/VSCode/resources/LICENSE | 1 + 3 files changed, 64 insertions(+), 37 deletions(-) create mode 100644 projects/VSCode/resources/LICENSE diff --git a/projects/VSCode/Makefile b/projects/VSCode/Makefile index d89a80ffe..9907c036d 100644 --- a/projects/VSCode/Makefile +++ b/projects/VSCode/Makefile @@ -117,13 +117,12 @@ endif ifeq ($(PLATFORM),PLATFORM_WEB) # Emscripten required variables - EMSDK_PATH ?= C:/emsdk - EMSCRIPTEN_VERSION ?= 1.38.31 - CLANG_VERSION = e$(EMSCRIPTEN_VERSION)_64bit - PYTHON_VERSION = 2.7.13.1_64bit\python-2.7.13.amd64 - NODE_VERSION = 8.9.1_64bit - export PATH = $(EMSDK_PATH);$(EMSDK_PATH)\clang\$(CLANG_VERSION);$(EMSDK_PATH)\node\$(NODE_VERSION)\bin;$(EMSDK_PATH)\python\$(PYTHON_VERSION);$(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION);C:\raylib\MinGW\bin:$$(PATH) - EMSCRIPTEN = $(EMSDK_PATH)\emscripten\$(EMSCRIPTEN_VERSION) + EMSDK_PATH ?= C:/emsdk + EMSCRIPTEN_PATH ?= $(EMSDK_PATH)/upstream/emscripten + CLANG_PATH = $(EMSDK_PATH)/upstream/bin + PYTHON_PATH = $(EMSDK_PATH)/python/3.9.2-1_64bit + NODE_PATH = $(EMSDK_PATH)/node/14.18.2_64bit/bin + export PATH = $(EMSDK_PATH);$(EMSCRIPTEN_PATH);$(CLANG_PATH);$(NODE_PATH);$(PYTHON_PATH):$$(PATH) endif # Define raylib release directory for compiled library. @@ -344,7 +343,7 @@ ifeq ($(PLATFORM),PLATFORM_RPI) endif ifeq ($(PLATFORM),PLATFORM_WEB) # Libraries for web (HTML5) compiling - LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.bc + LDLIBS = $(RAYLIB_RELEASE_PATH)/libraylib.a endif # Define a recursive wildcard function diff --git a/projects/VSCode/main.c b/projects/VSCode/main.c index 835b4b08f..2d7b121f9 100644 --- a/projects/VSCode/main.c +++ b/projects/VSCode/main.c @@ -15,12 +15,30 @@ * This example has been created using raylib 1.0 (www.raylib.com) * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) * -* Copyright (c) 2013-2020 Ramon Santamaria (@raysan5) +* Copyright (c) 2013-2022 Ramon Santamaria (@raysan5) * ********************************************************************************************/ #include "raylib.h" +#if defined(PLATFORM_WEB) + #include +#endif + +//---------------------------------------------------------------------------------- +// Local Variables Definition (local to this module) +//---------------------------------------------------------------------------------- +Camera camera = { 0 }; +Vector3 cubePosition = { 0 }; + +//---------------------------------------------------------------------------------- +// Local Functions Declaration +//---------------------------------------------------------------------------------- +static void UpdateDrawFrame(void); // Update and draw one frame + +//---------------------------------------------------------------------------------- +// Main entry point +//---------------------------------------------------------------------------------- int main() { // Initialization @@ -30,7 +48,6 @@ int main() InitWindow(screenWidth, screenHeight, "raylib"); - Camera camera = { 0 }; camera.position = (Vector3){ 10.0f, 10.0f, 8.0f }; camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; @@ -39,45 +56,55 @@ int main() SetCameraMode(camera, CAMERA_ORBITAL); - Vector3 cubePosition = { 0 }; + //-------------------------------------------------------------------------------------- +#if defined(PLATFORM_WEB) + emscripten_set_main_loop(UpdateDrawFrame, 60, 1); +#else 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); - //---------------------------------------------------------------------------------- - - // 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(); - - DrawText("This is a raylib example", 10, 40, 20, DARKGRAY); - - DrawFPS(10, 10); - - EndDrawing(); - //---------------------------------------------------------------------------------- + UpdateDrawFrame(); } +#endif // De-Initialization //-------------------------------------------------------------------------------------- - CloseWindow(); // Close window and OpenGL context + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- return 0; +} + +// Update and draw game frame +static void UpdateDrawFrame(void) +{ + // Update + //---------------------------------------------------------------------------------- + UpdateCamera(&camera); + //---------------------------------------------------------------------------------- + + // 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(); + + DrawText("This is a raylib example", 10, 40, 20, DARKGRAY); + + DrawFPS(10, 10); + + EndDrawing(); + //---------------------------------------------------------------------------------- } \ No newline at end of file diff --git a/projects/VSCode/resources/LICENSE b/projects/VSCode/resources/LICENSE new file mode 100644 index 000000000..ebde2c573 --- /dev/null +++ b/projects/VSCode/resources/LICENSE @@ -0,0 +1 @@ +Assets license.