projects
/
carveJwlIkooP6JGAAIwe30JlM.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
turbo chaos
[carveJwlIkooP6JGAAIwe30JlM.git]
/
player_skate.c
diff --git
a/player_skate.c
b/player_skate.c
index 74668282b51104bf70c52c6e3b110a94776a6d5b..522ea3010a3fd93cf909063e4f6be1397203c202 100644
(file)
--- a/
player_skate.c
+++ b/
player_skate.c
@@
-117,7
+117,7
@@
static int skate_grind_scansq( v3f pos, v3f dir, float r,
support_max;
v3f support_axis;
support_max;
v3f support_axis;
- v3_cross( plane,
localplayer.basis[1]
, support_axis );
+ v3_cross( plane,
(v3f){0,1,0}
, support_axis );
v3_normalize( support_axis );
bh_iter it;
v3_normalize( support_axis );
bh_iter it;
@@
-154,9
+154,9
@@
static int skate_grind_scansq( v3f pos, v3f dir, float r,
v3_cross( va, vb, normal );
sample->normal[0] = v3_dot( support_axis, normal );
v3_cross( va, vb, normal );
sample->normal[0] = v3_dot( support_axis, normal );
- sample->normal[1] =
v3_dot( localplayer.basis[1], normal )
;
+ sample->normal[1] =
normal[1]
;
sample->co[0] = v3_dot( support_axis, d );
sample->co[0] = v3_dot( support_axis, d );
- sample->co[1] =
v3_dot( localplayer.basis[1], d )
;
+ sample->co[1] =
d[1]
;
v3_copy( normal, sample->normal3 ); /* normalize later
if we want to us it */
v3_copy( normal, sample->normal3 ); /* normalize later
if we want to us it */
@@
-234,8
+234,8
@@
too_many_samples:
v3_muls( dir, vg_signf(v3_dot(dir,plane)), dir );
v3_add( average_direction, dir, average_direction );
v3_muls( dir, vg_signf(v3_dot(dir,plane)), dir );
v3_add( average_direction, dir, average_direction );
- float yi =
v3_dot( localplayer.basis[1], si->normal3 )
,
- yj =
v3_dot( localplayer.basis[1], sj->normal3 )
;
+ float yi =
si->normal3[1]
,
+ yj =
sj->normal3[1]
;
if( yi > yj ) v3_add( si->normal3, average_normal, average_normal );
else v3_add( sj->normal3, average_normal, average_normal );
if( yi > yj ) v3_add( si->normal3, average_normal, average_normal );
else v3_add( sj->normal3, average_normal, average_normal );
@@
-287,18
+287,14
@@
static int create_jumps_to_hit_target( jump_info *jumps,
v3f v0;
v3_sub( target, localplayer.rb.co, v0 );
v3f v0;
v3_sub( target, localplayer.rb.co, v0 );
- m3x3_mulv( localplayer.invbasis, v0, v0 );
v3f ax;
v3_copy( v0, ax );
ax[1] = 0.0f;
v3_normalize( ax );
v3f ax;
v3_copy( v0, ax );
ax[1] = 0.0f;
v3_normalize( ax );
- v3f v_local;
- m3x3_mulv( localplayer.invbasis, localplayer.rb.v, v_local );
-
- v2f d = { v3_dot( ax, v0 ), v0[1] },
- v = { v3_dot( ax, v_local ), v_local[1] };
+ v2f d = { v3_dot( ax, v0 ), v0[1] },
+ v = { v3_dot( ax, localplayer.rb.v ), localplayer.rb.v[1] };
float a = atan2f( v[1], v[0] ),
m = v2_length( v ),
float a = atan2f( v[1], v[0] ),
m = v2_length( v ),
@@
-317,7
+313,6
@@
static int create_jumps_to_hit_target( jump_info *jumps,
v3_muls( ax, cosf( a0 ) * m, inf->v );
inf->v[1] += sinf( a0 ) * m;
v3_muls( ax, cosf( a0 ) * m, inf->v );
inf->v[1] += sinf( a0 ) * m;
- m3x3_mulv( localplayer.basis, inf->v, inf->v );
inf->land_dist = d[0] / (cosf(a0)*m);
inf->gravity = gravity;
inf->land_dist = d[0] / (cosf(a0)*m);
inf->gravity = gravity;
@@
-330,7
+325,6
@@
static int create_jumps_to_hit_target( jump_info *jumps,
v3_muls( ax, cosf( a1 ) * m, inf->v );
inf->v[1] += sinf( a1 ) * m;
v3_muls( ax, cosf( a1 ) * m, inf->v );
inf->v[1] += sinf( a1 ) * m;
- m3x3_mulv( localplayer.basis, inf->v, inf->v );
inf->land_dist = d[0] / (cosf(a1)*m);
inf->gravity = gravity;
inf->land_dist = d[0] / (cosf(a1)*m);
inf->gravity = gravity;
@@
-358,7
+352,7
@@
static void player__approximate_best_trajectory(void){
v3_normalize( axis );
/* at high slopes, Y component is low */
v3_normalize( axis );
/* at high slopes, Y component is low */
- float upness =
v3_dot( localplayer.rb.to_world[1], localplayer.basis[1] )
,
+ float upness =
localplayer.rb.to_world[1][1]
,
angle_begin = -(1.0f-fabsf( upness )),
angle_end = 1.0f;
angle_begin = -(1.0f-fabsf( upness )),
angle_end = 1.0f;
@@
-408,17
+402,14
@@
static void player__approximate_best_trajectory(void){
inf->gravity = gravity;
v3_copy( launch_v, inf->v );
inf->gravity = gravity;
v3_copy( launch_v, inf->v );
- m3x3f basis;
- m3x3_copy( localplayer.basis, basis );
-
for( int i=1; i<=50; i++ ){
float t = (float)i * k_trace_delta;
v3_muls( launch_v, t, co1 );
for( int i=1; i<=50; i++ ){
float t = (float)i * k_trace_delta;
v3_muls( launch_v, t, co1 );
-
v3_muladds( co1, basis[1], -0.5f * gravity * t*t, co1 )
;
+
co1[1] += -0.5f * gravity * t*t
;
v3_add( launch_co, co1, co1 );
v3_add( launch_co, co1, co1 );
- float launch_vy =
v3_dot( launch_v,basis[1] )
;
+ float launch_vy =
launch_v[1]
;
int search_for_grind = 1;
if( grind_located ) search_for_grind = 0;
int search_for_grind = 1;
if( grind_located ) search_for_grind = 0;
@@
-439,7
+430,7
@@
static void player__approximate_best_trajectory(void){
for( int j=0; j<2; j++ ){
v3_muls( launch_v_bounds[j], t, bound[j] );
for( int j=0; j<2; j++ ){
v3_muls( launch_v_bounds[j], t, bound[j] );
-
v3_muladds( bound[j], basis[1], -0.5f*gravity*t*t, bound[j] )
;
+
bound[j][1] += -0.5f*gravity*t*t
;
v3_add( launch_co, bound[j], bound[j] );
}
v3_add( launch_co, bound[j], bound[j] );
}
@@
-458,14
+449,12
@@
static void player__approximate_best_trajectory(void){
if( search_for_grind ){
v3f ve;
v3_copy( launch_v, ve );
if( search_for_grind ){
v3f ve;
v3_copy( launch_v, ve );
- v
3_muladds( ve, basis[1], -gravity * t, ve )
;
+ v
e[1] += -gravity * t
;
if( skate_grind_scansq( closest, ve, 0.5f, &grind ) ){
/* check alignment */
if( skate_grind_scansq( closest, ve, 0.5f, &grind ) ){
/* check alignment */
- v2f v0 = { v3_dot( ve, basis[0] ),
- v3_dot( ve, basis[2] ) },
- v1 = { v3_dot( grind.dir, basis[0] ),
- v3_dot( grind.dir, basis[2] ) };
+ v2f v0 = { ve[0], ve[2] },
+ v1 = { grind.dir[0], grind.dir[2] };
v2_normalize( v0 );
v2_normalize( v1 );
v2_normalize( v0 );
v2_normalize( v1 );
@@
-494,7
+483,6
@@
static void player__approximate_best_trajectory(void){
m4x3_mulv( gate->transport, co1, co1 );
m3x3_mulv( gate->transport, launch_v, launch_v);
m4x3_mulv( gate->transport, launch_co, launch_co );
m4x3_mulv( gate->transport, co1, co1 );
m3x3_mulv( gate->transport, launch_v, launch_v);
m4x3_mulv( gate->transport, launch_co, launch_co );
- m3x3_mul( gate->transport, basis, basis );
}
}
}
}
@@
-520,7
+508,7
@@
static void player__approximate_best_trajectory(void){
v3f ve;
v3_copy( launch_v, ve );
v3f ve;
v3_copy( launch_v, ve );
- v
3_muladds( ve, localplayer.basis[1], -gravity * t, ve )
;
+ v
e[1] += -gravity * t
;
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;
@@
-567,13
+555,10
@@
static void player__approximate_best_trajectory(void){
v3_copy( jump->v, launch_v );
v3_copy( localplayer.rb.co, launch_co );
v3_copy( jump->v, launch_v );
v3_copy( localplayer.rb.co, launch_co );
-
- m3x3f basis;
- m3x3_copy( localplayer.basis, basis );
float t = 0.05f * jump->land_dist;
v3_muls( launch_v, t, co0 );
float t = 0.05f * jump->land_dist;
v3_muls( launch_v, t, co0 );
-
v3_muladds( co0, basis[1], -0.5f * jump->gravity * t*t, co0 )
;
+
co0[1] += -0.5f * jump->gravity * t*t
;
v3_add( launch_co, co0, co0 );
/* rough scan to make sure we dont collide with anything */
v3_add( launch_co, co0, co0 );
/* rough scan to make sure we dont collide with anything */
@@
-584,7
+569,7
@@
static void player__approximate_best_trajectory(void){
t *= jump->land_dist;
v3_muls( launch_v, t, co1 );
t *= jump->land_dist;
v3_muls( launch_v, t, co1 );
-
v3_muladds( co1, basis[1], -0.5f * jump->gravity * t*t, co1 )
;
+
co1[1] += -0.5f * jump->gravity * t*t
;
v3_add( launch_co, co1, co1 );
float t1;
v3_add( launch_co, co1, co1 );
float t1;
@@
-605,8
+590,7
@@
static void player__approximate_best_trajectory(void){
/* determine score */
v3f ve;
v3_copy( jump->v, ve );
/* determine score */
v3f ve;
v3_copy( jump->v, ve );
- v3_muladds( ve, localplayer.basis[1],
- -jump->gravity*jump->land_dist, ve );
+ ve[1] += -jump->gravity*jump->land_dist;
jump->score = -v3_dot( ve, grind.n ) * 0.9f;
player_skate.possible_jumps[ player_skate.possible_jump_count ++ ] =
jump->score = -v3_dot( ve, grind.n ) * 0.9f;
player_skate.possible_jumps[ player_skate.possible_jump_count ++ ] =
@@
-677,9
+661,8
@@
invalidated_grind:;
v3_zero( state->flip_axis );
}
}
v3_zero( state->flip_axis );
}
}
- else{
- v3_copy( localplayer.basis[1], state->land_normal );
- }
+ else
+ v3_copy( (v3f){0,1,0}, state->land_normal );
}
/*
}
/*
@@
-939,7
+922,7
@@
static void skate_apply_jump_model(void){
v3f jumpdir;
/* Launch more up if alignment is up else improve velocity */
v3f jumpdir;
/* Launch more up if alignment is up else improve velocity */
- float aup =
v3_dot( localplayer.basis[1], localplayer.rb.to_world[1] )
,
+ float aup =
localplayer.rb.to_world[1][1]
,
mod = 0.5f,
dir = mod + fabsf(aup)*(1.0f-mod);
mod = 0.5f,
dir = mod + fabsf(aup)*(1.0f-mod);
@@
-1049,9
+1032,7
@@
static void skate_apply_cog_model(void){
/* Apply forces & intergrate */
v3_muladds( state->cog_v, F, -rb, state->cog_v );
/* Apply forces & intergrate */
v3_muladds( state->cog_v, F, -rb, state->cog_v );
- v3_muladds( state->cog_v, localplayer.basis[1], -9.8f * k_rb_delta,
- state->cog_v );
-
+ state->cog_v[1] += -9.8f * k_rb_delta;
v3_muladds( state->cog, state->cog_v, k_rb_delta, state->cog );
}
v3_muladds( state->cog, state->cog_v, k_rb_delta, state->cog );
}
@@
-1497,7
+1478,7
@@
static void skate_adjust_up_direction(void){
}
else{
v3f avg;
}
else{
v3f avg;
- v3_add( localplayer.rb.to_world[1],
localplayer.basis[1]
, avg );
+ v3_add( localplayer.rb.to_world[1],
(v3f){0,1,0}
, avg );
v3_normalize( avg );
v3_lerp( state->up_dir, avg,
v3_normalize( avg );
v3_lerp( state->up_dir, avg,
@@
-2102,9
+2083,7
@@
static void player__skate_update(void){
}
}
min_dist -= 0.2f;
}
}
min_dist -= 0.2f;
- float vy = v3_dot( localplayer.basis[1], localplayer.rb.v );
- vy = vg_maxf( 0.0f, vy );
-
+ float vy = vg_maxf( 0.0f, localplayer.rb.v[1] );
slap = vg_clampf( (min_dist/0.5f) + vy, 0.0f, 1.0f )*0.3f;
}
state->slap = vg_lerpf( state->slap, slap, 10.0f*k_rb_delta );
slap = vg_clampf( (min_dist/0.5f) + vy, 0.0f, 1.0f )*0.3f;
}
state->slap = vg_lerpf( state->slap, slap, 10.0f*k_rb_delta );
@@
-2305,9
+2284,7
@@
begin_collision:;
}
rb_update_transform( &localplayer.rb );
}
rb_update_transform( &localplayer.rb );
- v3_muladds( localplayer.rb.v, localplayer.basis[1],
- -state->gravity_bias * player_skate.substep_delta,
- localplayer.rb.v );
+ localplayer.rb.v[1] += -state->gravity_bias * player_skate.substep_delta;
player_skate.substep -= player_skate.substep_delta;
player_skate.substep -= player_skate.substep_delta;