text3d
[carveJwlIkooP6JGAAIwe30JlM.git] / world.h
diff --git a/world.h b/world.h
index e23ae219e3abca7e8d610fbf53b0db6f3deb57ef..41191b8462d98bf3aa1bb5d42814bb35524dde25 100644 (file)
--- a/world.h
+++ b/world.h
@@ -56,10 +56,6 @@ static const float k_light_cube_size = 8.0f;
 
 struct world_instance 
 {
-   /* This is a small flag we use to changelevel.
-    * It will not be cleared until all sounds stop playing 
-    */
-
    /* Fixed items
     * -------------------------------------------------------
     */
@@ -133,6 +129,7 @@ struct world_instance
     * (world_gen.h)
     * --------------------------------------------------------------------------
     */
+
    /*
     * Main world .mdl 
     */
@@ -165,150 +162,6 @@ struct world_instance
 
    ent_gate *rendering_gate;
 
-#if 0
-   /*
-    * Named safe places to respawn
-    */
-   struct respawn_point
-   {
-      v3f co;
-      v4f q;
-      const char *name;
-   }
-   * spawns;
-   u32 spawn_count;
-
-   /*
-    * Audio player entities
-    */
-   struct world_audio_thing
-   {
-      v3f pos;
-      float volume, range;
-      u32 flags;
-      audio_clip temp_embedded_clip;
-   }
-   * audio_things;
-   u32 audio_things_count;
-
-   struct soundscape
-   {
-      /* locking */
-      audio_channel *channels[4];
-      
-      /* accessable without locking */
-      v3f spawn_position;
-
-      u32 usage_count;
-      u32 max_instances;
-      u32 allow_transitions;
-      float transition_duration;
-      const char *label;
-   }
-   * soundscapes;
-   u32 soundscape_count;
-
-   /*
-    * Box volume entities
-    */
-   struct world_volume
-   {
-      m4x3f transform, inv_transform;
-      mdl_node *node;
-   }
-   * volumes;
-   u32 volume_count;
-
-   /* 
-    * Lights
-    */
-   struct world_light
-   {
-      mdl_node *node;
-      struct classtype_world_light *inf;
-      m4x3f inverse_world;
-      v2f angle_sin_cos;
-   }
-   * lights;
-   u32 light_count;
-
-   /*
-    * Routes (world_routes.h)
-    * --------------------------------------------------------------------------
-    */
-
-   struct route_node
-   {
-      v3f co, right, up, h;
-      u32 next[2];
-
-      u32 special_type, special_id, current_refs, ref_count;
-      u32 route_ids[4];    /* Gates can be linked into up to four routes */
-   }
-   *nodes;
-   u32 node_count;
-
-   struct route
-   {
-      u32 track_id;
-      v4f colour;
-
-      u32 start;
-      mdl_submesh sm;
-      
-      int active;
-      float factive;
-
-      double best_lap, latest_pass; /* Session */
-
-      m4x3f scoreboard_transform;
-   }
-   *routes;
-   u32 route_count;
-
-   struct route_gate
-   {
-      struct teleport_gate
-      { 
-         v3f co[2];
-         v4f q[2];
-         v2f dims;
-
-         m4x3f to_world, transport;
-      }
-      gate;
-
-      u32 node_id;
-
-      struct route_timing
-      {
-         u32 version; /* Incremented on every teleport */
-         double time;
-      } 
-      timing;
-   }
-   *gates;
-   u32 gate_count;
-
-   struct nonlocal_gate
-   {
-      struct teleport_gate gate;
-      mdl_node *node;
-
-      u32 target_map_index, working;
-   }
-   *nonlocal_gates;
-   u32 nonlocalgate_count;
-
-   struct route_collector
-   {
-      struct route_timing timing;
-   }
-   *collectors;
-   u32 collector_count;
-#endif
-
-
    /* logic 
     * ----------------------------------------------------
     */
@@ -490,7 +343,7 @@ VG_STATIC void ent_volume_call( world_instance *world, ent_call *call )
       call->ent = volume->target;
 
       if( volume->type == k_volume_subtype_particle ){
-         v3f co;
+         float *co = alloca( sizeof(float)*3 );
          co[0] = vg_randf()*2.0f-1.0f;
          co[1] = vg_randf()*2.0f-1.0f;
          co[2] = vg_randf()*2.0f-1.0f;
@@ -570,7 +423,8 @@ VG_STATIC void ent_audio_call( world_instance *world, ent_call *call )
                      return;
                   }
                  
-                  existing = audio_channel_fadeout( existing, audio->crossfade);
+                  existing->group = 0;
+                  existing = audio_channel_fadeout(existing, audio->crossfade);
                }
 
                ch = audio_get_first_idle_channel();