- q_m3x3( sm->q, transform );
- v3_copy( sm->pivot, transform[3] );
- scene_add_foliage( &world.props, mworld, sm, transform );
+ mdl_node_transform( pnode, transform );
+
+ rigidbody *rb = &world.temp_rbs[ world.rb_count ++ ];
+
+ box_copy( block->bbx, rb->bbx ); /* TODO: apply scale */
+ v3_copy( pnode->co, rb->co );
+ rb_init( rb );
+ v4_copy( pnode->q, rb->q );
+ rb_update_transform( rb );
+ }
+ else if( pnode->classtype == k_classtype_spawn )
+ {
+ struct respawn_point *rp = &world.spawns[ world.spawn_count ++ ];
+
+ v3_copy( pnode->co, rp->co );
+ v4_copy( pnode->q, rp->q );
+ strcpy( rp->name, mdl_pstr( mworld, pnode->pstr_name ) );
+ }
+ else if( pnode->classtype == k_classtype_water )
+ {
+ if( wrender.enabled )
+ {
+ vg_warn( "Multiple water surfaces in level! ('%s')\n",
+ mdl_pstr( mworld, pnode->pstr_name ));
+ continue;
+ }
+
+ mdl_submesh *sm = mdl_node_submesh( mworld, pnode, 0 );
+
+ if( sm )
+ {
+ glmesh surf;
+ mdl_unpack_submesh( mworld, &surf, sm );
+ water_init();
+ water_set_surface( &surf, pnode->co[1] );
+ }