+ v3_copy( pnode->co, rp->co );
+ v4_copy( pnode->q, rp->q );
+ rp->name = mdl_pstr( world->meta, pnode->pstr_name );
+}
+
+VG_STATIC void world_pct_water( world_instance *world, mdl_node *pnode )
+{
+ if( world->water.enabled )
+ {
+ vg_warn( "Multiple water surfaces in level! ('%s')\n",
+ mdl_pstr( world->meta, pnode->pstr_name ));
+ return;
+ }
+
+ world->water.enabled = 1;
+ water_set_surface( world, pnode->co[1] );
+}
+
+VG_STATIC void world_pct_audio( world_instance *world, mdl_node *pnode )
+{
+ struct world_audio_thing *thing = &world->audio_things[
+ world->audio_things_count ];
+
+ memset( thing, 0, sizeof(struct world_audio_thing) );
+ struct classtype_audio *aud = mdl_get_entdata( world->meta, pnode );
+
+ v3_copy( pnode->co, thing->pos );
+
+ if( aud->flags & AUDIO_FLAG_SPACIAL_3D )
+ thing->volume = aud->volume * pnode->s[0];
+ else
+ thing->volume = aud->volume;
+
+ thing->flags = aud->flags;
+ thing->temp_embedded_clip.path = mdl_pstr( world->meta, aud->pstr_file );
+ thing->temp_embedded_clip.source_mode = k_audio_source_mono;
+
+ audio_clip_load( &thing->temp_embedded_clip, world_global.audio_heap );
+ thing->player.name = mdl_pstr( world->meta, pnode->pstr_name );
+ thing->player.enqued = 0;
+
+ pnode->sub_uid = world->audio_things_count;
+ world->audio_things_count ++;
+}
+
+VG_STATIC void world_pct_trigger( world_instance *world, mdl_node *pnode )
+{
+ struct trigger_zone *trigger = &world->triggers[ world->trigger_count ];
+ struct classtype_trigger *inf = mdl_get_entdata( world->meta, pnode );
+
+ if( inf->target )
+ {
+ mdl_node *target_node = mdl_node_from_id( world->meta, inf->target );
+
+ trigger->target.sub_id = target_node->sub_uid;
+ trigger->target.classtype = target_node->classtype;
+ }
+ else
+ {
+ vg_warn( "Trigger with no target...\n" );
+ return;
+ }
+
+ mdl_node_transform( pnode, trigger->transform );
+ m4x3_invert_full( trigger->transform, trigger->inv_transform );
+
+ world->trigger_count ++;
+}
+
+
+VG_STATIC void world_pct_relay( world_instance *world, mdl_node *pnode )
+{
+ struct logic_relay *relay = &world->logic_relays[ world->relay_count ];
+ struct classtype_logic_relay *inf = mdl_get_entdata( world->meta, pnode );
+
+ relay->target_count = 0;
+
+ for( int i=0; i<vg_list_size(relay->targets); i++ )
+ {
+ if( inf->targets[i] )