-#include "rigidbody.h"
-
-static rb_object baller = {
- .type = k_rb_shape_box,
- .rb.bbx = {{ -0.1f, -0.2f, -0.1f },
- { 0.1f, 1.0f, 0.1f }},
+#pragma once
+#include "vg/vg_m.h"
+#include "vg/vg_rigidbody.h"
+#include "scene_rigidbody.h"
+
+struct {
+ rigidbody rb;
+ boxf box;
+}
+static baller = {
.rb.q = { 0,0,0,1 },
+ .box = {{ -0.1f, -0.2f, -0.1f },
+ { 0.1f, 1.0f, 0.1f }},
};
static void testing_update(void){
v3_zero( baller.rb.w );
v3_zero( baller.rb.v );
q_identity( baller.rb.q );
- rb_update_transform( &baller.rb );
+ rb_update_matrices( &baller.rb );
+ }
+
+ if( vg_getkey( SDLK_8 ) ){
+ localplayer.have_glider = 1;
+ localplayer.glider_orphan = 0;
+ player_glide.t = -1.0f;
}
- rb_object_debug( &baller, VG__RED );
+
+ vg_line_boxf_transformed( baller.rb.to_world, baller.box, VG__RED );
world_instance *world = world_current_instance();
+ rigidbody _null = {0};
+ _null.inv_mass = 0.0f;
+ m3x3_zero( _null.iI );
+
rb_solver_reset();
rb_ct *buf = rb_global_buffer();
- rb_contact_count += rb_box__scene( baller.rb.to_world, baller.rb.bbx,
- NULL, &world->rb_geo.inf.scene, buf,
+ rb_contact_count += rb_box__scene( baller.rb.to_world, baller.box,
+ NULL, world->geo_bh, buf,
k_material_flag_ghosts );
for( u32 j=0; j<rb_contact_count; j++ ){
buf[j].rba = &baller.rb;
- buf[j].rbb = &world->rb_geo.rb;
+ buf[j].rbb = &_null;
}
rb_presolve_contacts( rb_contact_buffer, rb_contact_count );
rb_solve_contacts( rb_contact_buffer, rb_contact_count );
rb_iter( &baller.rb );
- rb_update_transform( &baller.rb );
+ rb_update_matrices( &baller.rb );
}
static void testing_init(void){
- rb_init_object( &baller, 1.0f );
+ rb_setbody_box( &baller.rb, baller.box, 8.0f, 1.0f );
}