summaryrefslogtreecommitdiffhomepage
path: root/examples/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'examples/src/core')
-rw-r--r--examples/src/core/core_2d_camera.c4
-rw-r--r--examples/src/core/core_3d_camera_mode.c (renamed from examples/src/core/core_3d_mode.c)10
-rw-r--r--examples/src/core/core_basic_window.c12
-rw-r--r--examples/src/core/core_color_select.c94
-rw-r--r--examples/src/core/core_custom_logging.c84
-rw-r--r--examples/src/core/core_input_gamepad.c80
-rw-r--r--examples/src/core/core_input_gestures.c (renamed from examples/src/core/core_gestures_detection.c)4
-rw-r--r--examples/src/core/core_input_mouse_wheel.c (renamed from examples/src/core/core_mouse_wheel.c)4
-rw-r--r--examples/src/core/core_input_multitouch.c89
-rw-r--r--examples/src/core/core_loading_thread.c147
-rw-r--r--examples/src/core/core_vr_simulator.c38
-rw-r--r--examples/src/core/core_window_letterbox.c90
12 files changed, 506 insertions, 150 deletions
diff --git a/examples/src/core/core_2d_camera.c b/examples/src/core/core_2d_camera.c
index 7c35c90..6a0b11a 100644
--- a/examples/src/core/core_2d_camera.c
+++ b/examples/src/core/core_2d_camera.c
@@ -105,8 +105,8 @@ int main()
DrawRectangleRec(player, RED);
- DrawRectangle(camera.target.x, -500, 1, screenHeight*4, GREEN);
- DrawRectangle(-500, camera.target.y, screenWidth*4, 1, GREEN);
+ DrawLine(camera.target.x, -screenHeight*10, camera.target.x, screenHeight*10, GREEN);
+ DrawLine(-screenWidth*10, camera.target.y, screenWidth*10, camera.target.y, GREEN);
EndMode2D();
diff --git a/examples/src/core/core_3d_mode.c b/examples/src/core/core_3d_camera_mode.c
index 39c0752..a496220 100644
--- a/examples/src/core/core_3d_mode.c
+++ b/examples/src/core/core_3d_camera_mode.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Initialize 3d mode
+* raylib [core] example - Initialize 3d camera mode
*
* 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)
@@ -15,13 +15,13 @@ int main()
{
// Initialization
//--------------------------------------------------------------------------------------
- int screenWidth = 800;
- int screenHeight = 450;
+ const int screenWidth = 800;
+ const int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d mode");
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - 3d camera mode");
// Define the camera to look into our 3d world
- Camera3D camera;
+ Camera3D camera = { 0 };
camera.position = (Vector3){ 0.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)
diff --git a/examples/src/core/core_basic_window.c b/examples/src/core/core_basic_window.c
index 51caa45..b30f05d 100644
--- a/examples/src/core/core_basic_window.c
+++ b/examples/src/core/core_basic_window.c
@@ -1,6 +1,16 @@
/*******************************************************************************************
*
-* raylib [core] example - basic window
+* raylib [core] example - Basic window
+*
+* Welcome to raylib!
+*
+* To test examples, just press F6 and execute raylib_compile_execute script
+* Note that compiled executable is placed in the same folder as .c file
+*
+* You can find all basic examples on C:\raylib\raylib\examples folder or
+* raylib official webpage: www.raylib.com
+*
+* Enjoy using raylib. :)
*
* 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)
diff --git a/examples/src/core/core_color_select.c b/examples/src/core/core_color_select.c
deleted file mode 100644
index 002a693..0000000
--- a/examples/src/core/core_color_select.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************************
-*
-* raylib [core] example - Color selection by mouse (collision detection)
-*
-* 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) 2014 Ramon Santamaria (@raysan5)
-*
-********************************************************************************************/
-
-#include "raylib.h"
-
-int main()
-{
- // Initialization
- //--------------------------------------------------------------------------------------
- int screenWidth = 800;
- int screenHeight = 450;
-
- InitWindow(screenWidth, screenHeight, "raylib [core] example - color selection (collision detection)");
-
- Color colors[21] = { DARKGRAY, MAROON, ORANGE, DARKGREEN, DARKBLUE, DARKPURPLE, DARKBROWN,
- GRAY, RED, GOLD, LIME, BLUE, VIOLET, BROWN, LIGHTGRAY, PINK, YELLOW,
- GREEN, SKYBLUE, PURPLE, BEIGE };
-
- Rectangle colorsRecs[21]; // Rectangles array
-
- // Fills colorsRecs data (for every rectangle)
- for (int i = 0; i < 21; i++)
- {
- colorsRecs[i].x = 20 + 100*(i%7) + 10*(i%7);
- colorsRecs[i].y = 60 + 100*(i/7) + 10*(i/7);
- colorsRecs[i].width = 100;
- colorsRecs[i].height = 100;
- }
-
- bool selected[21] = { false }; // Selected rectangles indicator
-
- Vector2 mousePoint;
-
- 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
- //----------------------------------------------------------------------------------
- mousePoint = GetMousePosition();
-
- for (int i = 0; i < 21; i++) // Iterate along all the rectangles
- {
- if (CheckCollisionPointRec(mousePoint, colorsRecs[i]))
- {
- colors[i].a = 120;
-
- if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) selected[i] = !selected[i];
- }
- else colors[i].a = 255;
- }
- //----------------------------------------------------------------------------------
-
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
-
- ClearBackground(RAYWHITE);
-
- for (int i = 0; i < 21; i++) // Draw all rectangles
- {
- DrawRectangleRec(colorsRecs[i], colors[i]);
-
- // Draw four rectangles around selected rectangle
- if (selected[i])
- {
- DrawRectangle(colorsRecs[i].x, colorsRecs[i].y, 100, 10, RAYWHITE); // Square top rectangle
- DrawRectangle(colorsRecs[i].x, colorsRecs[i].y, 10, 100, RAYWHITE); // Square left rectangle
- DrawRectangle(colorsRecs[i].x + 90, colorsRecs[i].y, 10, 100, RAYWHITE); // Square right rectangle
- DrawRectangle(colorsRecs[i].x, colorsRecs[i].y + 90, 100, 10, RAYWHITE); // Square bottom rectangle
- }
- }
-
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
-
- // De-Initialization
- //--------------------------------------------------------------------------------------
- CloseWindow(); // Close window and OpenGL context
- //--------------------------------------------------------------------------------------
-
- return 0;
-} \ No newline at end of file
diff --git a/examples/src/core/core_custom_logging.c b/examples/src/core/core_custom_logging.c
new file mode 100644
index 0000000..cf1a601
--- /dev/null
+++ b/examples/src/core/core_custom_logging.c
@@ -0,0 +1,84 @@
+/*******************************************************************************************
+*
+* raylib [core] example - Custom logging
+*
+* This example has been created using raylib 2.1 (www.raylib.com)
+* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+* Example contributed by Pablo Marcos Oltra (@pamarcos) and reviewed by Ramon Santamaria (@raysan5)
+*
+* Copyright (c) 2018 Pablo Marcos Oltra (@pamarcos) and Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+#include <stdio.h> // Required for: fopen(), fclose(), fputc(), fwrite(), printf(), fprintf(), funopen()
+#include <time.h> // Required for: time_t, tm, time(), localtime(), strftime()
+
+// Custom logging funtion
+void LogCustom(int msgType, const char *text, va_list args)
+{
+ char timeStr[64];
+ time_t now = time(NULL);
+ struct tm *tm_info = localtime(&now);
+
+ strftime(timeStr, sizeof(timeStr), "%Y-%m-%d %H:%M:%S", tm_info);
+ printf("[%s] ", timeStr);
+
+ switch (msgType)
+ {
+ case LOG_INFO: printf("[INFO] : "); break;
+ case LOG_ERROR: printf("[ERROR]: "); break;
+ case LOG_WARNING: printf("[WARN] : "); break;
+ case LOG_DEBUG: printf("[DEBUG]: "); break;
+ default: break;
+ }
+
+ vprintf(text, args);
+ printf("\n");
+}
+
+int main(int argc, char* argv[])
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ int screenWidth = 800;
+ int screenHeight = 450;
+
+ // First thing we do is setting our custom logger to ensure everything raylib logs
+ // will use our own logger instead of its internal one
+ SetTraceLogCallback(LogCustom);
+
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - custom logging");
+
+ SetTargetFPS(60);
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ // TODO: Update your variables here
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(RAYWHITE);
+
+ DrawText("Check out the console output to see the custom logger in action!", 60, 200, 20, LIGHTGRAY);
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+}
diff --git a/examples/src/core/core_input_gamepad.c b/examples/src/core/core_input_gamepad.c
index 64520a4..e8a1c05 100644
--- a/examples/src/core/core_input_gamepad.c
+++ b/examples/src/core/core_input_gamepad.c
@@ -66,93 +66,93 @@ int main()
DrawTexture(texXboxPad, 0, 0, DARKGRAY);
// Draw buttons: xbox home
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_HOME)) DrawCircle(394, 89, 19, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE)) DrawCircle(394, 89, 19, RED);
// Draw buttons: basic
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_START)) DrawCircle(436, 150, 9, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_SELECT)) DrawCircle(352, 150, 9, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_X)) DrawCircle(501, 151, 15, BLUE);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_A)) DrawCircle(536, 187, 15, LIME);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_B)) DrawCircle(572, 151, 15, MAROON);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_Y)) DrawCircle(536, 115, 15, GOLD);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE_RIGHT)) DrawCircle(436, 150, 9, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE_LEFT)) DrawCircle(352, 150, 9, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_LEFT)) DrawCircle(501, 151, 15, BLUE);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) DrawCircle(536, 187, 15, LIME);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) DrawCircle(572, 151, 15, MAROON);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_UP)) DrawCircle(536, 115, 15, GOLD);
// Draw buttons: d-pad
DrawRectangle(317, 202, 19, 71, BLACK);
DrawRectangle(293, 228, 69, 19, BLACK);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_UP)) DrawRectangle(317, 202, 19, 26, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_DOWN)) DrawRectangle(317, 202 + 45, 19, 26, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_LEFT)) DrawRectangle(292, 228, 25, 19, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_RIGHT)) DrawRectangle(292 + 44, 228, 26, 19, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_UP)) DrawRectangle(317, 202, 19, 26, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_DOWN)) DrawRectangle(317, 202 + 45, 19, 26, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) DrawRectangle(292, 228, 25, 19, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) DrawRectangle(292 + 44, 228, 26, 19, RED);
// Draw buttons: left-right back
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_LB)) DrawCircle(259, 61, 20, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_XBOX_BUTTON_RB)) DrawCircle(536, 61, 20, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_TRIGGER_1)) DrawCircle(259, 61, 20, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawCircle(536, 61, 20, RED);
// Draw axis: left joystick
DrawCircle(259, 152, 39, BLACK);
DrawCircle(259, 152, 34, LIGHTGRAY);
- DrawCircle(259 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LEFT_X)*20),
- 152 - (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LEFT_Y)*20), 25, BLACK);
+ DrawCircle(259 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_X)*20),
+ 152 - (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_Y)*20), 25, BLACK);
// Draw axis: right joystick
DrawCircle(461, 237, 38, BLACK);
DrawCircle(461, 237, 33, LIGHTGRAY);
- DrawCircle(461 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_RIGHT_X)*20),
- 237 - (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_RIGHT_Y)*20), 25, BLACK);
+ DrawCircle(461 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_X)*20),
+ 237 - (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_Y)*20), 25, BLACK);
// Draw axis: left-right triggers
DrawRectangle(170, 30, 15, 70, GRAY);
DrawRectangle(604, 30, 15, 70, GRAY);
- DrawRectangle(170, 30, 15, (((1.0f + GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LT))/2.0f)*70), RED);
- DrawRectangle(604, 30, 15, (((1.0f + GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_RT))/2.0f)*70), RED);
+ DrawRectangle(170, 30, 15, (((1.0f + GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_TRIGGER))/2.0f)*70), RED);
+ DrawRectangle(604, 30, 15, (((1.0f + GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_TRIGGER))/2.0f)*70), RED);
- //DrawText(FormatText("Xbox axis LT: %02.02f", GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_LT)), 10, 40, 10, BLACK);
- //DrawText(FormatText("Xbox axis RT: %02.02f", GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_XBOX_AXIS_RT)), 10, 60, 10, BLACK);
+ //DrawText(FormatText("Xbox axis LT: %02.02f", GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_TRIGGER)), 10, 40, 10, BLACK);
+ //DrawText(FormatText("Xbox axis RT: %02.02f", GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_TRIGGER)), 10, 60, 10, BLACK);
}
else if (IsGamepadName(GAMEPAD_PLAYER1, PS3_NAME_ID))
{
DrawTexture(texPs3Pad, 0, 0, DARKGRAY);
// Draw buttons: ps
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_PS)) DrawCircle(396, 222, 13, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE)) DrawCircle(396, 222, 13, RED);
// Draw buttons: basic
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_SELECT)) DrawRectangle(328, 170, 32, 13, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_START)) DrawTriangle((Vector2){ 436, 168 }, (Vector2){ 436, 185 }, (Vector2){ 464, 177 }, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_TRIANGLE)) DrawCircle(557, 144, 13, LIME);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_CIRCLE)) DrawCircle(586, 173, 13, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_CROSS)) DrawCircle(557, 203, 13, VIOLET);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_SQUARE)) DrawCircle(527, 173, 13, PINK);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE_LEFT)) DrawRectangle(328, 170, 32, 13, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_MIDDLE_RIGHT)) DrawTriangle((Vector2){ 436, 168 }, (Vector2){ 436, 185 }, (Vector2){ 464, 177 }, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_UP)) DrawCircle(557, 144, 13, LIME);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) DrawCircle(586, 173, 13, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) DrawCircle(557, 203, 13, VIOLET);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_FACE_LEFT)) DrawCircle(527, 173, 13, PINK);
// Draw buttons: d-pad
DrawRectangle(225, 132, 24, 84, BLACK);
DrawRectangle(195, 161, 84, 25, BLACK);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_UP)) DrawRectangle(225, 132, 24, 29, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_DOWN)) DrawRectangle(225, 132 + 54, 24, 30, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_LEFT)) DrawRectangle(195, 161, 30, 25, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_RIGHT)) DrawRectangle(195 + 54, 161, 30, 25, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_UP)) DrawRectangle(225, 132, 24, 29, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_DOWN)) DrawRectangle(225, 132 + 54, 24, 30, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_LEFT)) DrawRectangle(195, 161, 30, 25, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_FACE_RIGHT)) DrawRectangle(195 + 54, 161, 30, 25, RED);
// Draw buttons: left-right back buttons
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_L1)) DrawCircle(239, 82, 20, RED);
- if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_PS3_BUTTON_R1)) DrawCircle(557, 82, 20, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_LEFT_TRIGGER_1)) DrawCircle(239, 82, 20, RED);
+ if (IsGamepadButtonDown(GAMEPAD_PLAYER1, GAMEPAD_BUTTON_RIGHT_TRIGGER_1)) DrawCircle(557, 82, 20, RED);
// Draw axis: left joystick
DrawCircle(319, 255, 35, BLACK);
DrawCircle(319, 255, 31, LIGHTGRAY);
- DrawCircle(319 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_LEFT_X)*20),
- 255 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_LEFT_Y)*20), 25, BLACK);
+ DrawCircle(319 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_X)*20),
+ 255 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_Y)*20), 25, BLACK);
// Draw axis: right joystick
DrawCircle(475, 255, 35, BLACK);
DrawCircle(475, 255, 31, LIGHTGRAY);
- DrawCircle(475 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_RIGHT_X)*20),
- 255 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_RIGHT_Y)*20), 25, BLACK);
+ DrawCircle(475 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_X)*20),
+ 255 + (GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_Y)*20), 25, BLACK);
// Draw axis: left-right triggers
DrawRectangle(169, 48, 15, 70, GRAY);
DrawRectangle(611, 48, 15, 70, GRAY);
- DrawRectangle(169, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_L2))/2.0f)*70), RED);
- DrawRectangle(611, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_PS3_AXIS_R2))/2.0f)*70), RED);
+ DrawRectangle(169, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_LEFT_TRIGGER))/2.0f)*70), RED);
+ DrawRectangle(611, 48, 15, (((1.0f - GetGamepadAxisMovement(GAMEPAD_PLAYER1, GAMEPAD_AXIS_RIGHT_TRIGGER))/2.0f)*70), RED);
}
else
{
diff --git a/examples/src/core/core_gestures_detection.c b/examples/src/core/core_input_gestures.c
index 63a1e6b..ce2ed86 100644
--- a/examples/src/core/core_gestures_detection.c
+++ b/examples/src/core/core_input_gestures.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] example - Gestures Detection
+* raylib [core] example - Input Gestures Detection
*
* This example has been created using raylib 1.4 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
@@ -21,7 +21,7 @@ int main()
int screenWidth = 800;
int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [core] example - gestures detection");
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - input gestures");
Vector2 touchPosition = { 0, 0 };
Rectangle touchArea = { 220, 10, screenWidth - 230, screenHeight - 20 };
diff --git a/examples/src/core/core_mouse_wheel.c b/examples/src/core/core_input_mouse_wheel.c
index 6a5252e..48cf704 100644
--- a/examples/src/core/core_mouse_wheel.c
+++ b/examples/src/core/core_input_mouse_wheel.c
@@ -1,6 +1,6 @@
/*******************************************************************************************
*
-* raylib [core] examples - Mouse wheel
+* raylib [core] examples - Mouse wheel input
*
* This test has been created using raylib 1.1 (www.raylib.com)
* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
@@ -18,7 +18,7 @@ int main()
int screenWidth = 800;
int screenHeight = 450;
- InitWindow(screenWidth, screenHeight, "raylib [core] example - mouse wheel");
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - input mouse wheel");
int boxPositionY = screenHeight/2 - 40;
int scrollSpeed = 4; // Scrolling speed in pixels
diff --git a/examples/src/core/core_input_multitouch.c b/examples/src/core/core_input_multitouch.c
new file mode 100644
index 0000000..5baab27
--- /dev/null
+++ b/examples/src/core/core_input_multitouch.c
@@ -0,0 +1,89 @@
+/*******************************************************************************************
+*
+* raylib [core] example - Input multitouch
+*
+* This example has been created using raylib 2.1 (www.raylib.com)
+* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+* Example contributed by Berni (@Berni8k) and reviewed by Ramon Santamaria (@raysan5)
+*
+* Copyright (c) 2019 Berni (@Berni8k) and Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+int main()
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ int screenWidth = 800;
+ int screenHeight = 450;
+
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - input multitouch");
+
+ Vector2 ballPosition = { -100.0f, -100.0f };
+ Color ballColor = BEIGE;
+
+ int touchCounter = 0;
+ Vector2 touchPosition;
+
+ SetTargetFPS(60);
+ //---------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ ballPosition = GetMousePosition();
+
+ ballColor = BEIGE;
+
+ if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) ballColor = MAROON;
+ if (IsMouseButtonDown(MOUSE_MIDDLE_BUTTON)) ballColor = LIME;
+ if (IsMouseButtonDown(MOUSE_RIGHT_BUTTON)) ballColor = DARKBLUE;
+
+ if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) touchCounter = 10;
+ if (IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) touchCounter = 10;
+ if (IsMouseButtonPressed(MOUSE_RIGHT_BUTTON)) touchCounter = 10;
+
+ if (touchCounter > 0) touchCounter--;
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(RAYWHITE);
+
+ // Multitouch
+ for (int i = 0; i < MAX_TOUCH_POINTS; ++i)
+ {
+ touchPosition = GetTouchPosition(i); // Get the touch point
+
+ if ((touchPosition.x >= 0) && (touchPosition.y >= 0)) // Make sure point is not (-1,-1) as this means there is no touch for it
+ {
+ // Draw circle and touch index number
+ DrawCircleV(touchPosition, 34, ORANGE);
+ DrawText(FormatText("%d", i), touchPosition.x - 10, touchPosition.y - 70, 40, BLACK);
+ }
+ }
+
+ // Draw the normal mouse location
+ DrawCircleV(ballPosition, 30 + (touchCounter*3), ballColor);
+
+ DrawText("move ball with mouse and click mouse button to change color", 10, 10, 20, DARKGRAY);
+ DrawText("touch the screen at multiple locations to get multiple balls", 10, 30, 20, DARKGRAY);
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+} \ No newline at end of file
diff --git a/examples/src/core/core_loading_thread.c b/examples/src/core/core_loading_thread.c
new file mode 100644
index 0000000..1dacd69
--- /dev/null
+++ b/examples/src/core/core_loading_thread.c
@@ -0,0 +1,147 @@
+/*******************************************************************************************
+*
+* raylib example - loading thread
+*
+* NOTE: This example requires linking with pthreads library,
+* on MinGW, it can be accomplished passing -static parameter to compiler
+*
+* This example has been created using raylib 2.5 (www.raylib.com)
+* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+* Copyright (c) 2014-2019 Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+#include "pthread.h" // POSIX style threads management
+
+#include <stdatomic.h> // C11 atomic data types
+
+#include <time.h> // Required for: clock()
+
+// Using C11 atomics for synchronization
+// NOTE: A plain bool (or any plain data type for that matter) can't be used for inter-thread synchronization
+static atomic_bool dataLoaded = ATOMIC_VAR_INIT(false); // Data Loaded completion indicator
+static void *LoadDataThread(void *arg); // Loading data thread function declaration
+
+static int dataProgress = 0; // Data progress accumulator
+
+int main()
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ int screenWidth = 800;
+ int screenHeight = 450;
+
+ InitWindow(screenWidth, screenHeight, "raylib [core] example - loading thread");
+
+ pthread_t threadId; // Loading data thread id
+
+ enum { STATE_WAITING, STATE_LOADING, STATE_FINISHED } state = STATE_WAITING;
+ int framesCounter = 0;
+
+ SetTargetFPS(60);
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ switch (state)
+ {
+ case STATE_WAITING:
+ {
+ if (IsKeyPressed(KEY_ENTER))
+ {
+ int error = pthread_create(&threadId, NULL, &LoadDataThread, NULL);
+ if (error != 0) TraceLog(LOG_ERROR, "Error creating loading thread");
+ else TraceLog(LOG_INFO, "Loading thread initialized successfully");
+
+ state = STATE_LOADING;
+ }
+ } break;
+ case STATE_LOADING:
+ {
+ framesCounter++;
+ if (atomic_load(&dataLoaded))
+ {
+ framesCounter = 0;
+ state = STATE_FINISHED;
+ }
+ } break;
+ case STATE_FINISHED:
+ {
+ if (IsKeyPressed(KEY_ENTER))
+ {
+ // Reset everything to launch again
+ atomic_store(&dataLoaded, false);
+ dataProgress = 0;
+ state = STATE_WAITING;
+ }
+ } break;
+ default: break;
+ }
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(RAYWHITE);
+
+ switch (state)
+ {
+ case STATE_WAITING: DrawText("PRESS ENTER to START LOADING DATA", 150, 170, 20, DARKGRAY); break;
+ case STATE_LOADING:
+ {
+ DrawRectangle(150, 200, dataProgress, 60, SKYBLUE);
+ if ((framesCounter/15)%2) DrawText("LOADING DATA...", 240, 210, 40, DARKBLUE);
+
+ } break;
+ case STATE_FINISHED:
+ {
+ DrawRectangle(150, 200, 500, 60, LIME);
+ DrawText("DATA LOADED!", 250, 210, 40, GREEN);
+
+ } break;
+ default: break;
+ }
+
+ DrawRectangleLines(150, 200, 500, 60, DARKGRAY);
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+}
+
+// Loading data thread function definition
+static void *LoadDataThread(void *arg)
+{
+ int timeCounter = 0; // Time counted in ms
+ clock_t prevTime = clock(); // Previous time
+
+ // We simulate data loading with a time counter for 5 seconds
+ while (timeCounter < 5000)
+ {
+ clock_t currentTime = clock() - prevTime;
+ timeCounter = currentTime*1000/CLOCKS_PER_SEC;
+
+ // We accumulate time over a global variable to be used in
+ // main thread as a progress bar
+ dataProgress = timeCounter/10;
+ }
+
+ // When data has finished loading, we set global variable
+ atomic_store(&dataLoaded, true);
+
+ return NULL;
+}
diff --git a/examples/src/core/core_vr_simulator.c b/examples/src/core/core_vr_simulator.c
index 3f59e83..65054b7 100644
--- a/examples/src/core/core_vr_simulator.c
+++ b/examples/src/core/core_vr_simulator.c
@@ -23,7 +23,35 @@ int main()
InitWindow(screenWidth, screenHeight, "raylib [core] example - vr simulator");
// Init VR simulator (Oculus Rift CV1 parameters)
- InitVrSimulator(GetVrDeviceInfo(HMD_OCULUS_RIFT_CV1));
+ InitVrSimulator();
+
+ VrDeviceInfo hmd = { 0 }; // VR device parameters (head-mounted-device)
+
+ // Oculus Rift CV1 parameters for simulator
+ hmd.hResolution = 2160; // HMD horizontal resolution in pixels
+ hmd.vResolution = 1200; // HMD vertical resolution in pixels
+ hmd.hScreenSize = 0.133793f; // HMD horizontal size in meters
+ hmd.vScreenSize = 0.0669f; // HMD vertical size in meters
+ hmd.vScreenCenter = 0.04678f; // HMD screen center in meters
+ hmd.eyeToScreenDistance = 0.041f; // HMD distance between eye and display in meters
+ hmd.lensSeparationDistance = 0.07f; // HMD lens separation distance in meters
+ hmd.interpupillaryDistance = 0.07f; // HMD IPD (distance between pupils) in meters
+
+ // NOTE: CV1 uses a Fresnel-hybrid-asymmetric lenses with specific distortion compute shaders.
+ // Following parameters are an approximation to distortion stereo rendering but results differ from actual device.
+ hmd.lensDistortionValues[0] = 1.0f; // HMD lens distortion constant parameter 0
+ hmd.lensDistortionValues[1] = 0.22f; // HMD lens distortion constant parameter 1
+ hmd.lensDistortionValues[2] = 0.24f; // HMD lens distortion constant parameter 2
+ hmd.lensDistortionValues[3] = 0.0f; // HMD lens distortion constant parameter 3
+ hmd.chromaAbCorrection[0] = 0.996f; // HMD chromatic aberration correction parameter 0
+ hmd.chromaAbCorrection[1] = -0.004f; // HMD chromatic aberration correction parameter 1
+ hmd.chromaAbCorrection[2] = 1.014f; // HMD chromatic aberration correction parameter 2
+ hmd.chromaAbCorrection[3] = 0.0f; // HMD chromatic aberration correction parameter 3
+
+ // Distortion shader (uses device lens distortion and chroma)
+ Shader distortion = LoadShader(0, "resources/distortion.fs");
+
+ SetVrConfiguration(hmd, distortion); // Set Vr device parameters for stereo rendering
// Define the camera to look into our 3d world
Camera camera;
@@ -77,9 +105,11 @@ int main()
// De-Initialization
//--------------------------------------------------------------------------------------
- CloseVrSimulator(); // Close VR simulator
-
- CloseWindow(); // Close window and OpenGL context
+ UnloadShader(distortion); // Unload distortion shader
+
+ CloseVrSimulator(); // Close VR simulator
+
+ CloseWindow(); // Close window and OpenGL context
//--------------------------------------------------------------------------------------
return 0;
diff --git a/examples/src/core/core_window_letterbox.c b/examples/src/core/core_window_letterbox.c
new file mode 100644
index 0000000..8c0843d
--- /dev/null
+++ b/examples/src/core/core_window_letterbox.c
@@ -0,0 +1,90 @@
+/*******************************************************************************************
+*
+* raylib [core] example - window scale letterbox
+*
+* This example has been created using raylib 2.5 (www.raylib.com)
+* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
+*
+* Example contributed by Anata (@anatagawa) and reviewed by Ramon Santamaria (@raysan5)
+*
+* Copyright (c) 2019 Anata (@anatagawa) and Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+#define max(a, b) ((a)>(b)? (a) : (b))
+#define min(a, b) ((a)<(b)? (a) : (b))
+
+int main()
+{
+ const int windowWidth = 800;
+ const int windowHeight = 450;
+
+ // Enable config flags for resizable window and vertical synchro
+ SetConfigFlags(FLAG_WINDOW_RESIZABLE | FLAG_VSYNC_HINT);
+ InitWindow(windowWidth, windowHeight, "raylib [core] example - window scale letterbox");
+ SetWindowMinSize(320, 240);
+
+ int gameScreenWidth = 640;
+ int gameScreenHeight = 480;
+
+ // Render texture initialization
+ RenderTexture2D target = LoadRenderTexture(gameScreenWidth, gameScreenHeight);
+ SetTextureFilter(target.texture, FILTER_BILINEAR); // Texture scale filter to use
+
+ Color colors[10] = { 0 };
+ for (int i = 0; i < 10; i++) colors[i] = (Color){ GetRandomValue(100, 250), GetRandomValue(50, 150), GetRandomValue(10, 100), 255 };
+
+ SetTargetFPS(60);
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while( !WindowShouldClose() ) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ // Compute required framebuffer scaling
+ float scale = min((float)GetScreenWidth()/gameScreenWidth, (float)GetScreenHeight()/gameScreenHeight);
+
+ if (IsKeyPressed(KEY_SPACE))
+ {
+ // Recalculate random colors for the bars
+ for (int i = 0; i < 10; i++) colors[i] = (Color){ GetRandomValue(100, 250), GetRandomValue(50, 150), GetRandomValue(10, 100), 255 };
+ }
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+ ClearBackground(BLACK);
+
+ // Draw everything in the render texture
+ BeginTextureMode(target);
+
+ ClearBackground(RAYWHITE); // Clear render texture background color
+
+ for (int i = 0; i < 10; i++) DrawRectangle(0, (gameScreenHeight/10)*i, gameScreenWidth, gameScreenHeight/10, colors[i]);
+
+ DrawText("You can resize the window,\nand see the screen scaling!", 10, 25, 20, WHITE);
+
+ EndTextureMode();
+
+ // Draw RenderTexture2D to window, properly scaled
+ DrawTexturePro(target.texture, (Rectangle){ 0.0f, 0.0f, (float)target.texture.width, (float)-target.texture.height },
+ (Rectangle){ (GetScreenWidth() - ((float)gameScreenWidth*scale))*0.5, (GetScreenHeight() - ((float)gameScreenHeight*scale))*0.5,
+ (float)gameScreenWidth*scale, (float)gameScreenHeight*scale }, (Vector2){ 0, 0 }, 0.0f, WHITE);
+
+ EndDrawing();
+ //--------------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ UnloadRenderTexture(target); // Unload render texture
+
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+}