2013-12-02 19:31:46 -08:00
|
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
|
|
//
|
|
|
|
// Purpose:
|
|
|
|
//
|
|
|
|
//=============================================================================//
|
|
|
|
|
|
|
|
#include "cbase.h"
|
|
|
|
#include "env_zoom.h"
|
|
|
|
|
|
|
|
#ifdef HL2_DLL
|
|
|
|
#include "hl2_player.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
// memdbgon must be the last include file in a .cpp file!!!
|
|
|
|
#include "tier0/memdbgon.h"
|
|
|
|
|
|
|
|
#define ENV_ZOOM_OVERRIDE (1<<0)
|
|
|
|
|
|
|
|
class CEnvZoom : public CPointEntity
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
DECLARE_CLASS( CEnvZoom, CPointEntity );
|
|
|
|
|
|
|
|
void InputZoom( inputdata_t &inputdata );
|
|
|
|
void InputUnZoom( inputdata_t &inputdata );
|
Mapbase v3.0
- Overhauled matcher system and added expanded wildcard support, meaning "text", "te?t", "blah_test", etc. are now supported instead of only trailing *
- Added support for regular expression matching
- Added the missing matrixinvert.h file, which prevented programmers from compiling vbsp
- Fixed env_global_light brightness
- Added info_player_view_proxy, an entity which mimics a player's view (created for script_intro)
- New UnZoomWithRate and SetZoomRate inputs on env_zoom
- New "Don't change target's angles" flag on logic_measure_movement
- Fixed logic_measure_movement not using ignore origin flags correctly
- Fixed filter_damage_mod secondary filter not recognizing mode correctly
- Fixed DisableGeigerCounter causing NPCs to ignore player, and possibly fixed other adverse effects in similar code
- Added SetEntityName input for setting an entity's targetname
- Added "SetTarget" support to point_posecontroller
- Added "sk_alyx_health" convar for adjustable npc_alyx health, restored/fixed "sk_barney_health" for adjustable npc_barney health
- Added ignore flags and several direction-related inputs to math_vector
- Added pose parameter stuff to logic_modelinfo
- Fixed ChangeWeapon not changing during combat
- Fixed holster/unholster on NPCs without holster/unholster animations
- Fixed func_tank and other "player in the way" code ignoring notarget
- Added SetPoseParameter input to animating entities
- Introduced an experimental chapter system which allows for custom chapter title/restriction management
- Added SetChapterTitle input to worldspawn for dynamic title changing
- Fixed func_tankairboatgun damage credit, added ability to use its damage keyvalues
- Fixed mapbase_rpc_enabled not actually affecting RPC
- Moved some newly found Combine soldier grenade code to ai_grenade for other grenade users
- Fixed some problems with the new shared activities
- Restored an old Mapbase entity as "prop_interactable", an entity which contains all of the functionality of a func_button/func_door in a prop entity
- Added env_microphone pitch scale for scaling the pitch of transmitted sounds
- Added experimental, long-overdue code for scenes to be able to access !target#'s and other scene-related names through AI_INPUT
- Added "mat_specular_disable_on_missing", which "disables" specular reflections when the cubemap texture is missing
- Fixed $envmapmasktransform and $bumptransform on VertexLitGeneric and related shaders
- Areaportal leaks now stop compilation in leaktest
- Replaced "-nodefaultcubemap" with "-defaultcubemap" as the shader changes allow maps to compile without default cubemaps by default with little effect
2020-02-05 19:08:49 +00:00
|
|
|
#ifdef MAPBASE
|
|
|
|
void InputUnZoomWithRate( inputdata_t &inputdata );
|
|
|
|
void InputSetZoomRate( inputdata_t &inputdata );
|
|
|
|
#endif
|
2013-12-02 19:31:46 -08:00
|
|
|
|
|
|
|
int GetFOV( void ) { return m_nFOV; }
|
|
|
|
float GetSpeed( void ) { return m_flSpeed; }
|
|
|
|
private:
|
|
|
|
|
|
|
|
float m_flSpeed;
|
|
|
|
int m_nFOV;
|
|
|
|
|
|
|
|
DECLARE_DATADESC();
|
|
|
|
};
|
|
|
|
|
|
|
|
LINK_ENTITY_TO_CLASS( env_zoom, CEnvZoom );
|
|
|
|
|
|
|
|
BEGIN_DATADESC( CEnvZoom )
|
|
|
|
|
|
|
|
DEFINE_KEYFIELD( m_flSpeed, FIELD_FLOAT, "Rate" ),
|
|
|
|
DEFINE_KEYFIELD( m_nFOV, FIELD_INTEGER, "FOV" ),
|
|
|
|
|
|
|
|
DEFINE_INPUTFUNC( FIELD_VOID, "Zoom", InputZoom ),
|
|
|
|
DEFINE_INPUTFUNC( FIELD_VOID, "UnZoom", InputUnZoom ),
|
Mapbase v3.0
- Overhauled matcher system and added expanded wildcard support, meaning "text", "te?t", "blah_test", etc. are now supported instead of only trailing *
- Added support for regular expression matching
- Added the missing matrixinvert.h file, which prevented programmers from compiling vbsp
- Fixed env_global_light brightness
- Added info_player_view_proxy, an entity which mimics a player's view (created for script_intro)
- New UnZoomWithRate and SetZoomRate inputs on env_zoom
- New "Don't change target's angles" flag on logic_measure_movement
- Fixed logic_measure_movement not using ignore origin flags correctly
- Fixed filter_damage_mod secondary filter not recognizing mode correctly
- Fixed DisableGeigerCounter causing NPCs to ignore player, and possibly fixed other adverse effects in similar code
- Added SetEntityName input for setting an entity's targetname
- Added "SetTarget" support to point_posecontroller
- Added "sk_alyx_health" convar for adjustable npc_alyx health, restored/fixed "sk_barney_health" for adjustable npc_barney health
- Added ignore flags and several direction-related inputs to math_vector
- Added pose parameter stuff to logic_modelinfo
- Fixed ChangeWeapon not changing during combat
- Fixed holster/unholster on NPCs without holster/unholster animations
- Fixed func_tank and other "player in the way" code ignoring notarget
- Added SetPoseParameter input to animating entities
- Introduced an experimental chapter system which allows for custom chapter title/restriction management
- Added SetChapterTitle input to worldspawn for dynamic title changing
- Fixed func_tankairboatgun damage credit, added ability to use its damage keyvalues
- Fixed mapbase_rpc_enabled not actually affecting RPC
- Moved some newly found Combine soldier grenade code to ai_grenade for other grenade users
- Fixed some problems with the new shared activities
- Restored an old Mapbase entity as "prop_interactable", an entity which contains all of the functionality of a func_button/func_door in a prop entity
- Added env_microphone pitch scale for scaling the pitch of transmitted sounds
- Added experimental, long-overdue code for scenes to be able to access !target#'s and other scene-related names through AI_INPUT
- Added "mat_specular_disable_on_missing", which "disables" specular reflections when the cubemap texture is missing
- Fixed $envmapmasktransform and $bumptransform on VertexLitGeneric and related shaders
- Areaportal leaks now stop compilation in leaktest
- Replaced "-nodefaultcubemap" with "-defaultcubemap" as the shader changes allow maps to compile without default cubemaps by default with little effect
2020-02-05 19:08:49 +00:00
|
|
|
#ifdef MAPBASE
|
|
|
|
DEFINE_INPUTFUNC( FIELD_VOID, "UnZoomWithRate", InputUnZoomWithRate ),
|
|
|
|
DEFINE_INPUTFUNC( FIELD_FLOAT, "SetZoomRate", InputSetZoomRate ),
|
|
|
|
#endif
|
2013-12-02 19:31:46 -08:00
|
|
|
|
|
|
|
END_DATADESC()
|
|
|
|
|
|
|
|
bool CanOverrideEnvZoomOwner( CBaseEntity *pZoomOwner )
|
|
|
|
{
|
|
|
|
CEnvZoom *pZoom = dynamic_cast<CEnvZoom*>(pZoomOwner );
|
|
|
|
|
|
|
|
if ( pZoom == NULL || ( pZoom && pZoom->HasSpawnFlags( ENV_ZOOM_OVERRIDE ) == false ) )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
float GetZoomOwnerDesiredFOV( CBaseEntity *pZoomOwner )
|
|
|
|
{
|
|
|
|
if ( CanOverrideEnvZoomOwner( pZoomOwner ) )
|
|
|
|
{
|
|
|
|
CEnvZoom *pZoom = dynamic_cast<CEnvZoom*>( pZoomOwner );
|
|
|
|
|
|
|
|
return pZoom->GetFOV();
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Purpose:
|
|
|
|
// Input : &inputdata -
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void CEnvZoom::InputZoom( inputdata_t &inputdata )
|
|
|
|
{
|
|
|
|
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
|
|
|
|
|
|
|
|
if ( pPlayer )
|
|
|
|
{
|
|
|
|
|
|
|
|
#ifdef HL2_DLL
|
|
|
|
if ( pPlayer == pPlayer->GetFOVOwner() )
|
|
|
|
{
|
|
|
|
CHL2_Player *pHLPlayer = static_cast<CHL2_Player*>( pPlayer );
|
|
|
|
|
|
|
|
pHLPlayer->StopZooming();
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
// If the player's already holding a fov from another env_zoom, we're allowed to overwrite it
|
|
|
|
if ( pPlayer->GetFOVOwner() && FClassnameIs( pPlayer->GetFOVOwner(), "env_zoom" ) )
|
|
|
|
{
|
|
|
|
pPlayer->ClearZoomOwner();
|
|
|
|
}
|
|
|
|
|
|
|
|
//Stuff the values
|
|
|
|
pPlayer->SetFOV( this, m_nFOV, m_flSpeed );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Purpose:
|
|
|
|
// Input : &inputdata -
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void CEnvZoom::InputUnZoom( inputdata_t &inputdata )
|
|
|
|
{
|
|
|
|
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
|
|
|
|
|
|
|
|
if ( pPlayer )
|
|
|
|
{
|
|
|
|
// Stuff the values
|
|
|
|
pPlayer->SetFOV( this, 0 );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Mapbase v3.0
- Overhauled matcher system and added expanded wildcard support, meaning "text", "te?t", "blah_test", etc. are now supported instead of only trailing *
- Added support for regular expression matching
- Added the missing matrixinvert.h file, which prevented programmers from compiling vbsp
- Fixed env_global_light brightness
- Added info_player_view_proxy, an entity which mimics a player's view (created for script_intro)
- New UnZoomWithRate and SetZoomRate inputs on env_zoom
- New "Don't change target's angles" flag on logic_measure_movement
- Fixed logic_measure_movement not using ignore origin flags correctly
- Fixed filter_damage_mod secondary filter not recognizing mode correctly
- Fixed DisableGeigerCounter causing NPCs to ignore player, and possibly fixed other adverse effects in similar code
- Added SetEntityName input for setting an entity's targetname
- Added "SetTarget" support to point_posecontroller
- Added "sk_alyx_health" convar for adjustable npc_alyx health, restored/fixed "sk_barney_health" for adjustable npc_barney health
- Added ignore flags and several direction-related inputs to math_vector
- Added pose parameter stuff to logic_modelinfo
- Fixed ChangeWeapon not changing during combat
- Fixed holster/unholster on NPCs without holster/unholster animations
- Fixed func_tank and other "player in the way" code ignoring notarget
- Added SetPoseParameter input to animating entities
- Introduced an experimental chapter system which allows for custom chapter title/restriction management
- Added SetChapterTitle input to worldspawn for dynamic title changing
- Fixed func_tankairboatgun damage credit, added ability to use its damage keyvalues
- Fixed mapbase_rpc_enabled not actually affecting RPC
- Moved some newly found Combine soldier grenade code to ai_grenade for other grenade users
- Fixed some problems with the new shared activities
- Restored an old Mapbase entity as "prop_interactable", an entity which contains all of the functionality of a func_button/func_door in a prop entity
- Added env_microphone pitch scale for scaling the pitch of transmitted sounds
- Added experimental, long-overdue code for scenes to be able to access !target#'s and other scene-related names through AI_INPUT
- Added "mat_specular_disable_on_missing", which "disables" specular reflections when the cubemap texture is missing
- Fixed $envmapmasktransform and $bumptransform on VertexLitGeneric and related shaders
- Areaportal leaks now stop compilation in leaktest
- Replaced "-nodefaultcubemap" with "-defaultcubemap" as the shader changes allow maps to compile without default cubemaps by default with little effect
2020-02-05 19:08:49 +00:00
|
|
|
#ifdef MAPBASE
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Purpose:
|
|
|
|
// Input : &inputdata -
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void CEnvZoom::InputUnZoomWithRate( inputdata_t &inputdata )
|
|
|
|
{
|
|
|
|
CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
|
|
|
|
|
|
|
|
if ( pPlayer )
|
|
|
|
{
|
|
|
|
// Stuff the values
|
|
|
|
pPlayer->SetFOV( this, 0, m_flSpeed, m_nFOV );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// Purpose:
|
|
|
|
// Input : &inputdata -
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void CEnvZoom::InputSetZoomRate( inputdata_t &inputdata )
|
|
|
|
{
|
|
|
|
m_flSpeed = inputdata.value.Float();
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|