projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
chaos caused by async
[carveJwlIkooP6JGAAIwe30JlM.git]
/
player_skate.c
diff --git
a/player_skate.c
b/player_skate.c
index fc10b7341fc0487cff6ba9b68ddde5f87efff120..7029edc774f1fe9b6bdb722d7b0a31141d45a86f 100644
(file)
--- a/
player_skate.c
+++ b/
player_skate.c
@@
-124,15
+124,15
@@
VG_STATIC int skate_grind_scansq( player_instance *player,
v3_normalize( support_axis );
while( bh_next( world->geo_bh, &it, box, &idx ) ){
v3_normalize( support_axis );
while( bh_next( world->geo_bh, &it, box, &idx ) ){
- u32 *ptri = &world->scene_geo
->
arrindices[ idx*3 ];
+ u32 *ptri = &world->scene_geo
.
arrindices[ idx*3 ];
v3f tri[3];
struct world_surface *surf = world_tri_index_surface(world,ptri[0]);
v3f tri[3];
struct world_surface *surf = world_tri_index_surface(world,ptri[0]);
- if( !(surf->info.flags & k_material_flag_
skate_surfac
e) )
+ if( !(surf->info.flags & k_material_flag_
grindabl
e) )
continue;
for( int j=0; j<3; j++ )
continue;
for( int j=0; j<3; j++ )
- v3_copy( world->scene_geo
->
arrvertices[ptri[j]].co, tri[j] );
+ v3_copy( world->scene_geo
.
arrvertices[ptri[j]].co, tri[j] );
for( int j=0; j<3; j++ ){
int i0 = j,
for( int j=0; j<3; j++ ){
int i0 = j,
@@
-519,7
+519,7
@@
void player__approximate_best_trajectory( player_instance *player )
v3_copy( co, inf->log[ inf->log_length ++ ] );
v3_copy( n, inf->n );
v3_copy( co, inf->log[ inf->log_length ++ ] );
v3_copy( n, inf->n );
- u32 *tri = &trace_world->scene_geo
->
arrindices[ idx*3 ];
+ u32 *tri = &trace_world->scene_geo
.
arrindices[ idx*3 ];
struct world_surface *surf =
world_tri_index_surface( trace_world, tri[0] );
struct world_surface *surf =
world_tri_index_surface( trace_world, tri[0] );
@@
-532,11
+532,13
@@
void player__approximate_best_trajectory( player_instance *player )
inf->score = -v3_dot( ve, inf->n );
inf->land_dist = t + k_trace_delta * t1;
inf->score = -v3_dot( ve, inf->n );
inf->land_dist = t + k_trace_delta * t1;
-
/* Bias prediction towords ramps */
/* Bias prediction towords ramps */
- if( !(surf->info.flags & k_material_flag_skate_
surface
) )
+ if( !(surf->info.flags & k_material_flag_skate_
target
) )
inf->score *= 10.0f;
inf->score *= 10.0f;
+ if( surf->info.flags & k_material_flag_boundary )
+ s->possible_jump_count --;
+
break;
}
break;
}
@@
-1161,7
+1163,7
@@
VG_STATIC void player__skate_post_update( player_instance *player )
jump_info *jump = &s->possible_jumps[i];
if( jump->log_length == 0 ){
jump_info *jump = &s->possible_jumps[i];
if( jump->log_length == 0 ){
- vg_fatal_e
xit_loop
( "assert: jump->log_length == 0\n" );
+ vg_fatal_e
rror
( "assert: jump->log_length == 0\n" );
}
for( int j=0; j<jump->log_length - 1; j ++ ){
}
for( int j=0; j<jump->log_length - 1; j ++ ){
@@
-1402,11
+1404,11
@@
int skate_compute_surface_alignment( player_instance *player,
if( idx != -1 )
{
if( idx != -1 )
{
- u32 *tri = &world->scene_geo
->
arrindices[ idx * 3 ];
+ u32 *tri = &world->scene_geo
.
arrindices[ idx * 3 ];
v3f verts[3];
for( int j=0; j<3; j++ )
v3f verts[3];
for( int j=0; j<3; j++ )
- v3_copy( world->scene_geo
->
arrvertices[ tri[j] ].co, verts[j] );
+ v3_copy( world->scene_geo
.
arrvertices[ tri[j] ].co, verts[j] );
v3f vert0, vert1, n;
v3_sub( verts[1], verts[0], vert0 );
v3f vert0, vert1, n;
v3_sub( verts[1], verts[0], vert0 );
@@
-1949,7
+1951,7
@@
VG_STATIC enum skate_activity skate_availible_grind( player_instance *player )
struct player_skate *s = &player->_skate;
if( s->grind_cooldown > 100 ){
struct player_skate *s = &player->_skate;
if( s->grind_cooldown > 100 ){
- vg_fatal_e
xit_loop
( "wth!\n" );
+ vg_fatal_e
rror
( "wth!\n" );
}
/* debounces this state manager a little bit */
}
/* debounces this state manager a little bit */
@@
-2955,15
+2957,20
@@
VG_STATIC void player__skate_animate( player_instance *player,
q_mul( kf_board->q, qtrick, kf_board->q );
q_normalize( kf_board->q );
q_mul( kf_board->q, qtrick, kf_board->q );
q_normalize( kf_board->q );
+ struct player_board *board = player->playerboard;
/* foot weight distribution */
if( s->blend_weight > 0.0f ){
/* foot weight distribution */
if( s->blend_weight > 0.0f ){
- kf_foot_l->co[2] += s->blend_weight * 0.2f;
- kf_foot_r->co[2] += s->blend_weight * 0.1f;
+ kf_foot_l->co[2] =
+ vg_lerpf( kf_foot_l->co[2],
+ board->truck_positions[k_board_truck_back][2]+0.3f,
+ 0.5f*s->blend_weight );
}
else{
}
else{
- kf_foot_r->co[2] += s->blend_weight * 0.3f;
- kf_foot_l->co[2] += s->blend_weight * 0.1f;
+ kf_foot_r->co[2] =
+ vg_lerpf( kf_foot_r->co[2],
+ board->truck_positions[k_board_truck_front][2]-0.3f,
+ -0.5f*s->blend_weight );
}
float slapm = vg_maxf( 1.0f-v3_length2( s->state.trick_vel ), 0.0f );
}
float slapm = vg_maxf( 1.0f-v3_length2( s->state.trick_vel ), 0.0f );