Fix score loader improperly reading player names with spaces
[neverball] / share / solid.h
index 3f3172f..4e694b0 100644 (file)
 #define M_ADDITIVE    16
 #define M_CLAMPED     32
 #define M_DECAL       64
-#define M_SHADOWED (M_OPAQUE | M_REFLECTIVE)
+#define M_TWO_SIDED  128
 
 /* Billboard types. */
 
 #define B_EDGE     1
 #define B_FLAT     2
 #define B_ADDITIVE 4
+#define B_NOFACE   8
 
 /* Lump flags. */
 
 #define ITEM_GROW       2
 #define ITEM_SHRINK     3
 
+/* Path flags. */
+
+#define P_ORIENTED 1
+
 /*---------------------------------------------------------------------------*/
 
 struct s_mtrl
 {
-    float a[4];                                /* ambient color              */
     float d[4];                                /* diffuse color              */
+    float a[4];                                /* ambient color              */
     float s[4];                                /* specular color             */
     float e[4];                                /* emission color             */
     float h[1];                                /* specular exponent          */
@@ -173,11 +178,16 @@ struct s_node
 struct s_path
 {
     float p[3];                                /* starting position          */
+    float e[4];                                /* orientation (quaternion)   */
     float t;                                   /* travel time                */
 
     int pi;
     int f;                                     /* enable flag                */
     int s;                                     /* smooth flag                */
+
+    int fl;                                    /* flags                      */
+
+    /* TODO: merge enable and smooth into flags. */
 };
 
 struct s_body
@@ -237,6 +247,8 @@ struct s_bill
     float rx[3];                               /* X rotation coefficients    */
     float ry[3];                               /* Y rotation coefficients    */
     float rz[3];                               /* Z rotation coefficients    */
+
+    float p[3];
 };
 
 struct s_jump
@@ -252,6 +264,8 @@ struct s_ball
     float p[3];                                /* position vector            */
     float v[3];                                /* velocity vector            */
     float w[3];                                /* angular velocity vector    */
+    float E[3][3];                             /* basis of pendulum          */
+    float W[3];                                /* angular pendulum velocity  */
     float r;                                   /* radius                     */
 };
 
@@ -314,28 +328,11 @@ struct s_file
 
 /*---------------------------------------------------------------------------*/
 
-void sol_body_p(float p[3], const struct s_file *, const struct s_body *);
-
-/*---------------------------------------------------------------------------*/
-
 int   sol_load_only_file(struct s_file *, const char *);
 int   sol_load_only_head(struct s_file *, const char *);
 int   sol_stor(struct s_file *, const char *);
 void  sol_free(struct s_file *);
 
-float sol_step(struct s_file *, const float *, float, int, int *);
-
-int   sol_jump_test(struct s_file *, float *, int);
-int   sol_swch_test(struct s_file *, int);
-
-struct s_goal *sol_goal_test(struct s_file *, float *, int);
-struct s_item *sol_item_test(struct s_file *, float *, float);
-
-/*---------------------------------------------------------------------------*/
-
-void put_file_state(FILE *, struct s_file *);
-void get_file_state(FILE *, struct s_file *);
-
 /*---------------------------------------------------------------------------*/
 
 #endif