summaryrefslogtreecommitdiff
path: root/src/cgame/cg_buildable.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cgame/cg_buildable.c')
-rw-r--r--src/cgame/cg_buildable.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/cgame/cg_buildable.c b/src/cgame/cg_buildable.c
index c550d11a..c83e3692 100644
--- a/src/cgame/cg_buildable.c
+++ b/src/cgame/cg_buildable.c
@@ -295,7 +295,7 @@ void CG_GhostBuildable( buildable_t buildable )
{
refEntity_t ent;
playerState_t *ps;
- vec3_t angles, forward, player_origin, entity_origin, target_origin, normal;
+ vec3_t angles, forward, player_origin, entity_origin, target_origin, normal, cross;
vec3_t mins, maxs, start, end;
float distance;
trace_t tr;
@@ -304,16 +304,6 @@ void CG_GhostBuildable( buildable_t buildable )
memset ( &ent, 0, sizeof( ent ) );
- VectorCopy( cg.predictedPlayerState.viewangles, angles );
- angles[ PITCH ] = 0; // always forward
- /////FIXME PITCH CAN'T BE ZERO
-
- AngleVectors( angles, forward, NULL, NULL );
- VectorCopy( ps->origin, player_origin );
-
- distance = BG_FindBuildDistForClass( ps->stats[ STAT_PCLASS ] );
- VectorMA( player_origin, distance, forward, entity_origin );
-
if( cg.predictedPlayerState.stats[ STAT_STATE ] & SS_WALLCLIMBING )
{
if( cg.predictedPlayerState.stats[ STAT_STATE ] & SS_WALLCLIMBINGCEILING )
@@ -324,17 +314,27 @@ void CG_GhostBuildable( buildable_t buildable )
else
VectorSet( normal, 0.0f, 0.0f, 1.0f );
+ VectorCopy( cg.predictedPlayerState.viewangles, angles );
+
+ AngleVectors( angles, forward, NULL, NULL );
+ CrossProduct( forward, normal, cross );
+ VectorNormalize( cross );
+ CrossProduct( normal, cross, forward );
+ VectorNormalize( forward );
+
+ VectorCopy( ps->origin, player_origin );
+
+ distance = BG_FindBuildDistForClass( ps->stats[ STAT_PCLASS ] );
+ VectorMA( player_origin, distance, forward, entity_origin );
+
VectorCopy( entity_origin, target_origin );
VectorMA( entity_origin, 32, normal, entity_origin );
VectorMA( target_origin, -4096, normal, target_origin );
-/* entity_origin[ 2 ] += 32;
- target_origin[ 2 ] -= 4096;*/
BG_FindBBoxForBuildable( buildable, mins, maxs );
CG_Trace( &tr, entity_origin, mins, maxs, target_origin, ps->clientNum, MASK_PLAYERSOLID );
VectorCopy( tr.endpos, entity_origin );
- /*entity_origin[ 2 ] += 0.1f;*/
VectorMA( entity_origin, 0.1f, normal, entity_origin );
AngleVectors( angles, forward, NULL, NULL );