Browse Source

Add Draw3DCircle function and update raylib and rlgl header

Draw3DCircle is useful to draw point lights radius.
victorfisac 9 years ago
parent
commit
2e26ce235d
3 changed files with 22 additions and 2 deletions
  1. 19 0
      src/models.c
  2. 2 1
      src/raylib.h
  3. 1 1
      src/rlgl.h

+ 19 - 0
src/models.c

@@ -75,6 +75,25 @@ void Draw3DLine(Vector3 startPos, Vector3 endPos, Color color)
     rlEnd();
 }
 
+// Draw a circle in 3D world space
+void Draw3DCircle(Vector3 center, float radius, float rotationAngle, Vector3 rotation, Color color)
+{
+    rlPushMatrix();
+        rlTranslatef(center.x, center.y, center.z);
+        rlRotatef(rotationAngle, rotation.x, rotation.y, rotation.z);
+        
+        rlBegin(RL_LINES);
+            for (int i = 0; i < 360; i += 10)
+            {
+                rlColor4ub(color.r, color.g, color.b, color.a);
+                
+                rlVertex3f(sin(DEG2RAD*i)*radius, cos(DEG2RAD*i)*radius, 0.0f);
+                rlVertex3f(sin(DEG2RAD*(i + 10)) * radius, cos(DEG2RAD*(i + 10)) * radius, 0.0f);
+            }
+        rlEnd();
+    rlPopMatrix();
+}
+
 // Draw cube
 // NOTE: Cube position is the center position
 void DrawCube(Vector3 position, float width, float height, float length, Color color)

+ 2 - 1
src/raylib.h

@@ -437,7 +437,7 @@ typedef struct LightData {
     
     Vector3 position;
     Vector3 target;     // Used on LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target)
-    float attenuation;  // Lost of light intensity with distance (world distance)
+    float radius;       // Lost of light intensity with distance (world distance)
     
     Color diffuse;      // Light color
     float intensity;    // Light intensity level
@@ -803,6 +803,7 @@ const char *SubText(const char *text, int position, int length);
 // Basic 3d Shapes Drawing Functions (Module: models)
 //------------------------------------------------------------------------------------
 void Draw3DLine(Vector3 startPos, Vector3 endPos, Color color);                                    // Draw a line in 3D world space
+void Draw3DCircle(Vector3 center, float radius, float rotationAngle, Vector3 rotation, Color color);    // Draw a circle in 3D world space
 void DrawCube(Vector3 position, float width, float height, float lenght, Color color);             // Draw cube
 void DrawCubeV(Vector3 position, Vector3 size, Color color);                                       // Draw cube (Vector version)
 void DrawCubeWires(Vector3 position, float width, float height, float lenght, Color color);        // Draw cube wires

+ 1 - 1
src/rlgl.h

@@ -218,7 +218,7 @@ typedef enum { OPENGL_11 = 1, OPENGL_33, OPENGL_ES_20 } GlVersion;
         
         Vector3 position;
         Vector3 target;     // Used on LIGHT_DIRECTIONAL and LIGHT_SPOT (cone direction target)
-        float attenuation;  // Lost of light intensity with distance (world distance)
+        float radius;       // Lost of light intensity with distance (world distance)
         
         Color diffuse;      // Use Vector3 diffuse
         float intensity;