MCPcopy Create free account
hub / github.com/JACoders/OpenJK / AimAtTarget

Function AimAtTarget

code/game/g_trigger.cpp:751–824  ·  view source on GitHub ↗

================= AimAtTarget Calculate origin2 so the target apogee will be hit ================= */

Source from the content-addressed store, hash-verified

749=================
750*/
751void AimAtTarget( gentity_t *self )
752{
753 gentity_t *ent;
754 vec3_t origin;
755 float height, gravity, time, forward;
756 float dist;
757
758 VectorAdd( self->absmin, self->absmax, origin );
759 VectorScale ( origin, 0.5, origin );
760
761 ent = G_PickTarget( self->target );
762 if ( !ent )
763 {
764 G_FreeEntity( self );
765 return;
766 }
767
768 if ( self->classname && !Q_stricmp( "trigger_push", self->classname ) )
769 {
770 if ( (self->spawnflags&2) )
771 {//check once a second to see if we should activate or deactivate ourselves
772 self->e_ThinkFunc = thinkF_trigger_push_checkclear;
773 self->nextthink = level.time + FRAMETIME;
774 }
775
776 if ( (self->spawnflags&16) )
777 {//relative, not an arc or linear
778 VectorCopy( ent->currentOrigin, self->s.origin2 );
779 return;
780 }
781 else if ( (self->spawnflags&4) )
782 {//linear, not an arc
783 VectorSubtract( ent->currentOrigin, origin, self->s.origin2 );
784 VectorNormalize( self->s.origin2 );
785 return;
786 }
787 }
788
789 if ( self->classname && !Q_stricmp( "target_push", self->classname ) )
790 {
791 if( self->spawnflags & PUSH_CONSTANT )
792 {
793 VectorSubtract ( ent->s.origin, self->s.origin, self->s.origin2 );
794 VectorNormalize( self->s.origin2);
795 VectorScale (self->s.origin2, self->speed, self->s.origin2);
796 return;
797 }
798 }
799 height = ent->s.origin[2] - origin[2];
800 if ( height < 0 )
801 {//sqrt of negative is bad!
802 height = 0;
803 }
804 gravity = g_gravity->value;
805 if ( gravity < 0 )
806 {
807 gravity = 0;
808 }

Callers

nothing calls this directly

Calls 8

VectorAddFunction · 0.85
VectorScaleFunction · 0.85
Q_stricmpFunction · 0.85
VectorCopyFunction · 0.85
VectorSubtractFunction · 0.85
VectorNormalizeFunction · 0.85
G_PickTargetFunction · 0.70
G_FreeEntityFunction · 0.70

Tested by

no test coverage detected