summaryrefslogtreecommitdiffhomepage
path: root/examples/shapes/shapes_following_eyes.c
diff options
context:
space:
mode:
authorRay <[email protected]>2019-05-03 16:00:16 +0200
committerRay <[email protected]>2019-05-03 16:00:16 +0200
commit62f1511e5f36fdf4e9dfb5b7d930c3121bf7072c (patch)
tree64ba32943468abe7b89c80ca2d7b85b1cb6443d9 /examples/shapes/shapes_following_eyes.c
parent0c53360a3abd923a7421ffc435fbb0ef76a08db1 (diff)
downloadraylib-62f1511e5f36fdf4e9dfb5b7d930c3121bf7072c.tar.gz
raylib-62f1511e5f36fdf4e9dfb5b7d930c3121bf7072c.zip
Batch of 9 new shapes examples!
Some examples included in this batch require the included libraries: `easings.h` and `raygui.h`. Examples included: - shapes_bouncing_ball - shapes_collision_area - shapes_following_eyes - shapes_draw_circle_sector (requires raygui.h) - shapes_draw_rectangle_rounded (requires raygui.h) - shapes_draw_ring (requires raygui.h) - shapes_easings_ball_anim (requires easings.h) - shapes_easings_box_anim (requires easings.h) - shapes_easings_rectangle_array (requires easings.h)
Diffstat (limited to 'examples/shapes/shapes_following_eyes.c')
-rw-r--r--examples/shapes/shapes_following_eyes.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/examples/shapes/shapes_following_eyes.c b/examples/shapes/shapes_following_eyes.c
new file mode 100644
index 00000000..e99a7e07
--- /dev/null
+++ b/examples/shapes/shapes_following_eyes.c
@@ -0,0 +1,104 @@
+/*******************************************************************************************
+*
+* raylib [shapes] example - following eyes
+*
+* 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) 2013-2019 Ramon Santamaria (@raysan5)
+*
+********************************************************************************************/
+
+#include "raylib.h"
+
+#include <math.h> // Required for: atan2f()
+
+int main()
+{
+ // Initialization
+ //--------------------------------------------------------------------------------------
+ const int screenWidth = 800;
+ const int screenHeight = 450;
+
+ InitWindow(screenWidth, screenHeight, "raylib [shapes] example - following eyes");
+
+ Vector2 scleraLeftPosition = { GetScreenWidth()/2 - 100, GetScreenHeight()/2 };
+ Vector2 scleraRightPosition = { GetScreenWidth()/2 + 100, GetScreenHeight()/2 };
+ float scleraRadius = 80;
+
+ Vector2 irisLeftPosition = { GetScreenWidth()/2 - 100, GetScreenHeight()/2 };
+ Vector2 irisRightPosition = { GetScreenWidth()/2 + 100, GetScreenHeight()/2};
+ float irisRadius = 24;
+
+ float angle;
+ float dx, dy, dxx, dyy;
+
+ SetTargetFPS(60);
+ //--------------------------------------------------------------------------------------
+
+ // Main game loop
+ while (!WindowShouldClose()) // Detect window close button or ESC key
+ {
+ // Update
+ //----------------------------------------------------------------------------------
+ irisLeftPosition = GetMousePosition();
+ irisRightPosition = GetMousePosition();
+
+ // Check not inside the left eye sclera
+ if (!CheckCollisionPointCircle(irisLeftPosition, scleraLeftPosition, scleraRadius - 20))
+ {
+ dx = irisLeftPosition.x - scleraLeftPosition.x;
+ dy = irisLeftPosition.y - scleraLeftPosition.y;
+
+ angle = atan2f(dy, dx);
+
+ dxx = (scleraRadius - irisRadius)*cosf(angle);
+ dyy = (scleraRadius - irisRadius)*sinf(angle);
+
+ irisLeftPosition.x = scleraLeftPosition.x + dxx;
+ irisLeftPosition.y = scleraLeftPosition.y + dyy;
+ }
+
+ // Check not inside the right eye sclera
+ if (!CheckCollisionPointCircle(irisRightPosition, scleraRightPosition, scleraRadius - 20))
+ {
+ dx = irisRightPosition.x - scleraRightPosition.x;
+ dy = irisRightPosition.y - scleraRightPosition.y;
+
+ angle = atan2f(dy, dx);
+
+ dxx = (scleraRadius - irisRadius)*cosf(angle);
+ dyy = (scleraRadius - irisRadius)*sinf(angle);
+
+ irisRightPosition.x = scleraRightPosition.x + dxx;
+ irisRightPosition.y = scleraRightPosition.y + dyy;
+ }
+ //----------------------------------------------------------------------------------
+
+ // Draw
+ //----------------------------------------------------------------------------------
+ BeginDrawing();
+
+ ClearBackground(RAYWHITE);
+
+ DrawCircleV(scleraLeftPosition, scleraRadius, LIGHTGRAY);
+ DrawCircleV(irisLeftPosition, irisRadius, BROWN);
+ DrawCircleV(irisLeftPosition, 10, BLACK);
+
+ DrawCircleV(scleraRightPosition, scleraRadius, LIGHTGRAY);
+ DrawCircleV(irisRightPosition, irisRadius, DARKGREEN);
+ DrawCircleV(irisRightPosition, 10, BLACK);
+
+ DrawFPS(10, 10);
+
+ EndDrawing();
+ //----------------------------------------------------------------------------------
+ }
+
+ // De-Initialization
+ //--------------------------------------------------------------------------------------
+ CloseWindow(); // Close window and OpenGL context
+ //--------------------------------------------------------------------------------------
+
+ return 0;
+} \ No newline at end of file