global function Viewcone_Init //DEFAULT: if you don't set one - defaults to this one global function ViewConeRampFree //misc global function ViewConeZero global function ViewConeZeroInstant global function ViewConeNarrow global function ViewConeTight global function ViewConeSmall global function ViewConeWide global function ViewConeFreeLookingForward global function ViewConeLockedForward global function ViewConeTDay global function ViewConeTDayZero global function ViewConeFastball //run out ramp global function ViewConeRampFrontLeft global function ViewConeRampFrontRight global function ViewConeRampBackLeft global function ViewConeRampBackRight //droppod global function ViewConeDropPodFrontR global function ViewConeDropPodFrontL global function ViewConeDropPodBackR global function ViewConeDropPodBackL global function ViewConeDropPod //right side jump global function ViewConeSideRightStandFront global function ViewConeSideRightStandBack global function ViewConeSideRightSitFront global function ViewConeSideRightSitBack //right side jump - focus on hero global function ViewConeSideRightWithHeroStandFront global function ViewConeSideRightWithHeroStandBack global function ViewConeSideRightWithHeroSitFront global function ViewConeSideRightWithHeroSitBack //right side jump - locked 180 view forward global function ViewConeSideRightLockedForwardStandFront global function ViewConeSideRightLockedForwardSitFront global function ViewConeSideRightLockedForwardStandBack global function ViewConeSideRightLockedForwardSitBack global function ViewConeSpSpawn global function InitView //evac global function ViewConeFree global function IsViewConeCurrent void function Viewcone_Init() { AddGlobalAnimEvent( "ViewConeZero", ViewConeZero ) AddGlobalAnimEvent( "ViewConeTight", ViewConeTight ) AddGlobalAnimEvent( "ViewConeDropPod", ViewConeDropPod ) AddGlobalAnimEvent( "ViewConeDropPodFrontR", ViewConeDropPodFrontR ) AddGlobalAnimEvent( "ViewConeDropPodFrontL", ViewConeDropPodFrontL ) AddGlobalAnimEvent( "ViewConeDropPodBackR", ViewConeDropPodBackR ) AddGlobalAnimEvent( "ViewConeDropPodBackL", ViewConeDropPodBackL ) AddGlobalAnimEvent( "ViewConeNarrow", ViewConeNarrow ) AddGlobalAnimEvent( "ViewConeSmall", ViewConeSmall ) AddGlobalAnimEvent( "ViewConeRampFrontLeft", ViewConeRampFrontLeft ) AddGlobalAnimEvent( "ViewConeRampFrontRight", ViewConeRampFrontRight ) AddGlobalAnimEvent( "ViewConeRampBackLeft", ViewConeRampBackLeft ) AddGlobalAnimEvent( "ViewConeRampBackRight", ViewConeRampBackRight ) AddGlobalAnimEvent( "ViewConeRampFree", ViewConeRampFree ) AddGlobalAnimEvent( "ViewConeFree", ViewConeFree ) AddGlobalAnimEvent( "ViewConeFreeLookingForward", ViewConeFreeLookingForward ) AddGlobalAnimEvent( "ViewConeTDay", ViewConeTDay ) AddGlobalAnimEvent( "ViewConeTDayZero", ViewConeTDayZero ) } void function ViewConeZero( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( 0 ) player.PlayerCone_SetMaxYaw( 0 ) player.PlayerCone_SetMinPitch( 0 ) player.PlayerCone_SetMaxPitch( 0 ) } void function ViewConeZeroInstant( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.0 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( 0 ) player.PlayerCone_SetMaxYaw( 0 ) player.PlayerCone_SetMinPitch( 0 ) player.PlayerCone_SetMaxPitch( 0 ) } void function ViewConeTight( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -15 ) player.PlayerCone_SetMaxYaw( 15 ) player.PlayerCone_SetMinPitch( -15 ) player.PlayerCone_SetMaxPitch( 15 ) } void function ViewConeSmall( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -38 ) player.PlayerCone_SetMaxYaw( 38 ) player.PlayerCone_SetMinPitch( -25 ) player.PlayerCone_SetMaxPitch( 25 ) } void function ViewConeWide( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -50 ) player.PlayerCone_SetMaxYaw( 50 ) player.PlayerCone_SetMinPitch( -35 ) player.PlayerCone_SetMaxPitch( 35 ) } void function ViewConeDropPod( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -70 ) player.PlayerCone_SetMaxYaw( 70 ) player.PlayerCone_SetMinPitch( -30 ) player.PlayerCone_SetMaxPitch( 30 ) } const FRONTDIF = -75 const BACKDIF = -30 void function ViewConeDropPodFrontR( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() //range is 140 player.PlayerCone_SetMinYaw( -70 - FRONTDIF ) player.PlayerCone_SetMaxYaw( 70 - FRONTDIF ) player.PlayerCone_SetMinPitch( -30 ) player.PlayerCone_SetMaxPitch( 30 ) } void function ViewConeDropPodFrontL( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() //range is 140 player.PlayerCone_SetMinYaw( -70 + FRONTDIF ) player.PlayerCone_SetMaxYaw( 70 + FRONTDIF ) player.PlayerCone_SetMinPitch( -30 ) player.PlayerCone_SetMaxPitch( 30 ) } void function ViewConeDropPodBackR( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() //range is 140 player.PlayerCone_SetMinYaw( -70 - BACKDIF ) player.PlayerCone_SetMaxYaw( 70 - BACKDIF ) player.PlayerCone_SetMinPitch( -30 ) player.PlayerCone_SetMaxPitch( 30 ) } void function ViewConeDropPodBackL( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() //range is 140 player.PlayerCone_SetMinYaw( -70 + BACKDIF ) player.PlayerCone_SetMaxYaw( 70 + BACKDIF ) player.PlayerCone_SetMinPitch( -30 ) player.PlayerCone_SetMaxPitch( 30 ) } void function ViewConeNarrow( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -60 ) player.PlayerCone_SetMaxYaw( 60 ) player.PlayerCone_SetMinPitch( -60 ) player.PlayerCone_SetMaxPitch( 60 ) } void function ViewConeTDay( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 1.0 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -30 ) player.PlayerCone_SetMaxYaw( 30 ) player.PlayerCone_SetMinPitch( 0 ) player.PlayerCone_SetMaxPitch( 30 ) } void function ViewConeTDayZero( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 1.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( 0 ) player.PlayerCone_SetMaxYaw( 0 ) player.PlayerCone_SetMinPitch( 0 ) player.PlayerCone_SetMaxPitch( 0 ) } void function ViewConeFastball( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -25 ) player.PlayerCone_SetMaxYaw( 25 ) player.PlayerCone_SetMinPitch( -15 ) player.PlayerCone_SetMaxPitch( 15 ) } void function ViewConeFreeLookingForward( entity player ) { if ( !player.IsPlayer() ) return ViewConeFree( player ) thread InitView( player, 0, 180, ViewConeFreeLookingForward ) } void function ViewConeSpSpawn( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.25 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( 125 ) player.PlayerCone_SetMaxYaw( 125 ) player.PlayerCone_SetMinPitch( 7 ) player.PlayerCone_SetMaxPitch( 7 ) thread InitView( player, 7, 125, ViewConeSpSpawn ) } void function ViewConeSideRightLockedForwardStandFront( entity player ) { if ( !player.IsPlayer() ) return ViewConeLockedForward( player ) thread InitView( player, 15, 20, ViewConeSideRightLockedForwardStandFront ) } void function ViewConeSideRightLockedForwardSitFront( entity player ) { if ( !player.IsPlayer() ) return ViewConeLockedForward( player ) thread InitView( player, 0, 50, ViewConeSideRightLockedForwardSitFront ) } void function ViewConeSideRightLockedForwardStandBack( entity player ) { if ( !player.IsPlayer() ) return ViewConeLockedForward( player ) thread InitView( player, 15, 45, ViewConeSideRightLockedForwardStandBack ) } void function ViewConeSideRightLockedForwardSitBack( entity player ) { if ( !player.IsPlayer() ) return ViewConeLockedForward( player ) thread InitView( player, 0, 50, ViewConeSideRightLockedForwardSitBack ) } void function ViewConeSideRightWithHeroStandFront( entity player ) { if ( !player.IsPlayer() ) return ViewConeFree( player ) thread InitView( player, 15, 20, ViewConeSideRightWithHeroStandFront ) } void function ViewConeSideRightWithHeroSitFront( entity player ) { if ( !player.IsPlayer() ) return ViewConeFree( player ) thread InitView( player, 0, 50, ViewConeSideRightWithHeroSitFront ) } void function ViewConeSideRightWithHeroStandBack( entity player ) { if ( !player.IsPlayer() ) return ViewConeFree( player ) thread InitView( player, 15, 45, ViewConeSideRightWithHeroStandBack ) } void function ViewConeSideRightWithHeroSitBack( entity player ) { if ( !player.IsPlayer() ) return ViewConeFree( player ) thread InitView( player, 0, 50, ViewConeSideRightWithHeroSitBack ) } void function ViewConeSideRightStandFront( entity player ) { if ( !player.IsPlayer() ) return ViewConeFree( player ) thread InitView( player, 30, -10, ViewConeSideRightStandFront ) } void function ViewConeSideRightSitFront( entity player ) { if ( !player.IsPlayer() ) return ViewConeFree( player ) thread InitView( player, 20, -20, ViewConeSideRightSitFront ) } void function ViewConeSideRightStandBack( entity player ) { if ( !player.IsPlayer() ) return ViewConeFree( player ) thread InitView( player, 30, 20, ViewConeSideRightStandBack ) } void function ViewConeSideRightSitBack( entity player ) { if ( !player.IsPlayer() ) return ViewConeFree( player ) thread InitView( player, 20, 35, ViewConeSideRightSitBack ) } void function ViewConeRampFrontLeft( entity player ) { if ( !player.IsPlayer() ) return ViewConeRampFree( player ) thread InitView( player, 5, 70, ViewConeRampFrontLeft ) } void function ViewConeRampFrontRight( entity player ) { if ( !player.IsPlayer() ) return ViewConeRampFree( player ) thread InitView( player, 5, -70, ViewConeRampFrontRight ) } void function ViewConeRampBackLeft( entity player ) { if ( !player.IsPlayer() ) return ViewConeRampFree( player ) thread InitView( player, 5, 100, ViewConeRampBackLeft ) } void function ViewConeRampBackRight( entity player ) { if ( !player.IsPlayer() ) return ViewConeRampFree( player ) thread InitView( player, 5, -100, ViewConeRampBackRight ) } void function ViewConeRampFree( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -179 ) player.PlayerCone_SetMaxYaw( 181 ) player.PlayerCone_SetMinPitch( -30 ) player.PlayerCone_SetMaxPitch( 30 ) } void function ViewConeLockedForward( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -89 ) player.PlayerCone_SetMaxYaw( 81 ) player.PlayerCone_SetMinPitch( -30 ) player.PlayerCone_SetMaxPitch( 60 ) } void function ViewConeFree( entity player ) { if ( !player.IsPlayer() ) return player.PlayerCone_SetLerpTime( 0.5 ) player.PlayerCone_FromAnim() player.PlayerCone_SetMinYaw( -179 ) player.PlayerCone_SetMaxYaw( 181 ) player.PlayerCone_SetMinPitch( -60 ) player.PlayerCone_SetMaxPitch( 60 ) } void function InitView( entity player, int pitch, int yaw, void functionref( entity )callFunction ) { if ( !player.IsPlayer() ) return //have we already init the viewcone from this function before if ( IsViewConeCurrent( player, callFunction ) ) return player.EndSignal( "OnDestroy" ) entity dropship = player.GetParent() while( !dropship ) { wait 0.05 dropship = player.GetParent() } for ( int i = 0; i < 5; i++ ) { player.SetLocalAngles( Vector( pitch, yaw, 0 ) ) wait 0.1 } } bool function IsViewConeCurrent( entity actor, void functionref(entity ) func ) { entity player = actor if ( !IsValid( player ) ) return false Assert( player.IsPlayer() ) if ( player.p.currViewConeFunction == func ) return true player.p.currViewConeFunction = func return false }