Skip to content

Commit

Permalink
Merge pull request #10 from REDl3east/main
Browse files Browse the repository at this point in the history
Add core_input_mouse_wheel example from raylib
  • Loading branch information
rexim authored Feb 9, 2024
2 parents d62e168 + eecb9ee commit b73a0fa
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 4 deletions.
2 changes: 2 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ clang -I./include/ -o build/core_basic_screen_manager ./examples/core_basic_scre
clang -I./include/ -o build/core_input_keys ./examples/core_input_keys.c -L./lib/ -lraylib -lm
clang -I./include/ -o build/shapes_colors_palette ./examples/shapes_colors_palette.c -L./lib/ -lraylib -lm
clang -I./include/ -o build/game ./game.c -L./lib/ -lraylib -lm
clang -I./include/ -o ./build/core_input_mouse_wheel ./examples/core_input_mouse_wheel.c -L./lib/ -lraylib -lm

clang --target=wasm32 -I./include --no-standard-libraries -Wl,--export-table -Wl,--no-entry -Wl,--allow-undefined -Wl,--export=main -o wasm/core_basic_window.wasm ./examples/core_basic_window.c -DPLATFORM_WEB
clang --target=wasm32 -I./include --no-standard-libraries -Wl,--export-table -Wl,--no-entry -Wl,--allow-undefined -Wl,--export=main -o wasm/core_basic_screen_manager.wasm ./examples/core_basic_screen_manager.c -DPLATFORM_WEB
clang --target=wasm32 -I./include --no-standard-libraries -Wl,--export-table -Wl,--no-entry -Wl,--allow-undefined -Wl,--export=main -o wasm/core_input_keys.wasm ./examples/core_input_keys.c -DPLATFORM_WEB
clang --target=wasm32 -I./include --no-standard-libraries -Wl,--export-table -Wl,--no-entry -Wl,--allow-undefined -Wl,--export=main -o wasm/shapes_colors_palette.wasm ./examples/shapes_colors_palette.c -DPLATFORM_WEB
clang --target=wasm32 -I./include --no-standard-libraries -Wl,--export-table -Wl,--no-entry -Wl,--allow-undefined -Wl,--export=main -o wasm/game.wasm game.c -DPLATFORM_WEB
clang --target=wasm32 -I./include --no-standard-libraries -Wl,--export-table -Wl,--no-entry -Wl,--allow-undefined -Wl,--export=main -o wasm/core_input_mouse_wheel.wasm ./examples/core_input_mouse_wheel.c -DPLATFORM_WEB
71 changes: 71 additions & 0 deletions examples/core_input_mouse_wheel.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*******************************************************************************************
*
* raylib [core] example - Keyboard input
*
* Example originally created with raylib 1.0, last time updated with raylib 1.0
*
* 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) 2014-2024 Ramon Santamaria (@raysan5)
*
********************************************************************************************/

#include "raylib.h"

void raylib_js_set_entry(void (*entry)(void));

const int screenWidth = 800;
const int screenHeight = 450;
int boxPositionY = screenHeight/2 - 40;
int scrollSpeed = 4; // Scrolling speed in pixels
Vector2 ballPosition = { 0 };

void GameFrame()
{
// Update
//----------------------------------------------------------------------------------
boxPositionY -= (GetMouseWheelMove()*scrollSpeed);
//----------------------------------------------------------------------------------

// Draw
//----------------------------------------------------------------------------------
BeginDrawing();

ClearBackground(RAYWHITE);

DrawRectangle(screenWidth/2 - 40, boxPositionY, 80, 80, MAROON);

DrawText("Use mouse wheel to move the cube up and down!", 10, 10, 20, GRAY);
DrawText(TextFormat("Box position Y: %03i", 111, 222, 333, 444, 555), 10, 40, 20, LIGHTGRAY);

EndDrawing();
}

//------------------------------------------------------------------------------------
// Program main entry point
//------------------------------------------------------------------------------------
int main(void)
{
// Initialization
//--------------------------------------------------------------------------------------
InitWindow(screenWidth, screenHeight, "raylib [core] example - input mouse wheel");

SetTargetFPS(60); // Set our game to run at 60 frames-per-second
//--------------------------------------------------------------------------------------
#ifdef PLATFORM_WEB
raylib_js_set_entry(GameFrame);
#else
// Main game loop
while (!WindowShouldClose()) // Detect window close button or ESC key
{
GameFrame();
}

// De-Initialization
//--------------------------------------------------------------------------------------
CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
#endif
return 0;
}
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
<script>
const wasmPaths = {
"tsoding": ["game",],
"core": ["core_basic_window", "core_basic_screen_manager", "core_input_keys"],
"core": ["core_basic_window", "core_basic_screen_manager", "core_input_keys", "core_input_mouse_wheel",],
"shapes": ["shapes_colors_palette"]
}

Expand Down
18 changes: 15 additions & 3 deletions raylib.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class RaylibJs {
this.entryFunction = undefined;
this.prevPressedKeyState = new Set();
this.currentPressedKeyState = new Set();
this.currentMouseWheelMoveState = 0;
this.currentMousePosition = {x: 0, y: 0};
this.quit = false;
}
Expand Down Expand Up @@ -64,12 +65,15 @@ class RaylibJs {
const keyUp = (e) => {
this.currentPressedKeyState.delete(glfwKeyMapping[e.code]);
};
const wheelMove = (e) => {
this.currentMouseWheelMoveState = Math.sign(-e.deltaY);
};
const mouseMove = (e) => {
this.currentMousePosition = {x: e.clientX, y: e.clientY};
}

};
window.addEventListener("keydown", keyDown);
window.addEventListener("keyup", keyUp);
window.addEventListener("wheel", wheelMove);
window.addEventListener("mousemove", mouseMove);

this.wasm.instance.exports.main();
Expand Down Expand Up @@ -126,6 +130,7 @@ class RaylibJs {
EndDrawing() {
this.prevPressedKeyState.clear();
this.prevPressedKeyState = new Set(this.currentPressedKeyState);
this.currentMouseWheelMoveState = 0.0;
}

DrawCircleV(center_ptr, radius, color_ptr) {
Expand Down Expand Up @@ -170,11 +175,18 @@ class RaylibJs {
IsKeyDown(key) {
return this.currentPressedKeyState.has(key);
}

GetMouseWheelMove() {
return this.currentMouseWheelMoveState;
}
IsGestureDetected() {
return false;
}

TextFormat(... args){
// TODO: Implement printf style formatting for TextFormat
return args[0];
}

GetMousePosition(result_ptr) {
const bcrect = this.ctx.canvas.getBoundingClientRect();
const x = this.currentMousePosition.x - bcrect.left;
Expand Down
Binary file added wasm/core_input_mouse_wheel.wasm
Binary file not shown.

0 comments on commit b73a0fa

Please sign in to comment.