struct world_instance
{
- /* This is a small flag we use to changelevel.
- * It will not be cleared until all sounds stop playing
- */
-
/* Fixed items
* -------------------------------------------------------
*/
* (world_gen.h)
* --------------------------------------------------------------------------
*/
+
/*
* Main world .mdl
*/
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
* ----------------------------------------------------
*/
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;