DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ HandleView()

void DayZPlayer::HandleView ( )
inlineprotected

3rd person camera

См. определение в файле DayZPlayerImplement.c строка 1968

1969 {
1970 if (!IsAlive())
1971 {
1973 {
1974 ExitSights();
1975 }
1976 return;
1977 }
1978
1979 HumanInputController hic = GetInputController();
1980
1981 bool camChange = hic.CameraViewChanged();
1982
1983 if (IsRaised())
1984 {
1985 if (m_IsWeapon)
1986 {
1987 camChange = false;
1988 }
1989 }
1990
1992 if (GetGame().GetWorld().Is3rdPersonDisabled())
1993 {
1994 m_Camera3rdPerson = false;
1995 }
1996 else if (camChange)
1997 {
1999 }
2000
2001 // exits optics completely, comment to return to ADS
2003 ExitSights();
2004
2005 if (IsPlayerInStance(DayZPlayerConstants.STANCEMASK_RAISEDPRONE) && (m_CameraOptics || m_CameraIronsight))
2006 {
2007 SetVerticalMinimumAimLimit(DayZPlayerCameraIronsights.CONST_UD_MIN_BACK);
2009 }
2011 {
2012 SetVerticalMinimumAimLimit(DayZPlayerCameraIronsights.CONST_UD_MIN);
2014 }
2015
2016 if (hic.IsZoomToggle() && !m_MovementState.IsRaised())
2017 {
2019 if ((IsClimbingLadder() && Math.AbsInt(m_MovementState.m_iMovement) == 2) || (IsSwimming() && m_MovementState.m_iMovement == 3))
2020 {
2022 }
2023 else if (!IsClimbingLadder() && !IsSwimming() && !IsInVehicle())
2024 {
2025 float pSpeed;
2026 vector pLocalDirection;
2027 hic.GetMovement(pSpeed ,pLocalDirection);
2028
2029 if (m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_ERECT && pSpeed == 3)
2030 {
2032 }
2033 }
2034 }
2035 else
2036 {
2038 }
2039
2040 if (m_MovementState.IsRaisedInProne())
2041 {
2042 float headingAngle = MiscGameplayFunctions.GetHeadingAngle(this);
2043 float headingAngleDiffBlock = Math.AbsFloat(m_LastHeadingAngleBlock - headingAngle);
2044 float headingAngleDiffBlock2 = Math.AbsFloat(m_LastHeadingAngleBlock2 - headingAngle);
2045 float headingAngleDiff = 0.0;
2046
2047 if (m_LastHeadingAngle * headingAngle < 0.0)
2048 {
2049 headingAngleDiff = Math.AbsFloat(m_LastHeadingAngle + headingAngle);
2050 }
2051 else
2052 {
2053 headingAngleDiff = Math.AbsFloat(m_LastHeadingAngle - headingAngle);
2054 }
2055
2056 if (headingAngleDiff > 0.2)
2057 {
2058 int time = GetGame().GetTime();
2059
2060 float timefilterconstant = 400 - (headingAngleDiff * 100);
2061
2062 if (headingAngleDiffBlock > 0.8 && time - m_LastBackSoundTime > timefilterconstant)
2063 {
2064 float volume = headingAngleDiff / 0.5;
2065 if (volume > 1)
2066 {
2067 volume = 1;
2068 }
2069 if (volume < 0.25)
2070 {
2071 volume = 0.25;
2072 }
2073
2074 m_SoundOffset = headingAngleDiff / 2;
2075 if (m_SoundOffset > 0.25)
2076 {
2077 m_SoundOffset = 0.25;
2078 }
2079
2080 string soundSetName = "Cloth_Body_longmove_TShirt_Soundset";
2081
2082 string bodyClothName = "";
2083 EntityAI attachment = GetInventory().FindAttachment(InventorySlots.BODY);
2084 if (attachment)
2085 {
2086 bodyClothName = attachment.GetAttachmentSoundType();
2087 }
2088
2089 if (bodyClothName != "")
2090 {
2091 string path = "CfgSoundTables CfgAttachmentSoundTables Cloth_Body_Longmove_LookupTable";
2092 int soundCount = GetGame().ConfigGetChildrenCount(path);
2093
2094 for (int i = 0; i < soundCount; i++)
2095 {
2096 string name = "";
2098
2099 if (name == bodyClothName)
2100 {
2101 TStringArray stringArray = new TStringArray();
2102 GetGame().ConfigGetTextArray(path + " " + name + " soundSets", stringArray);
2103 soundSetName = stringArray.Get(0);
2104
2105 delete stringArray;
2106 }
2107 }
2108 }
2109
2110 SoundParams soundParams = new SoundParams(soundSetName);
2111 SoundObjectBuilder soundObjectBuilder = new SoundObjectBuilder(soundParams);
2112
2113 if (soundObjectBuilder != NULL)
2114 {
2115 SoundObject soundObject = soundObjectBuilder.BuildSoundObject();
2116
2117 if (soundObject != NULL)
2118 {
2119 soundObject.SetPosition(GetPosition());
2120
2121 AbstractWave wave = GetGame().GetSoundScene().Play3D(soundObject, soundObjectBuilder);
2122 wave.SetStartOffset(m_SoundOffset);
2123 wave.SetVolumeRelative(volume);
2124
2126 m_LastHeadingAngleBlock = headingAngle;
2127 }
2128 }
2129 }
2130
2131 if (headingAngleDiffBlock2 > 1.5 && time - m_LastBackSoundTime2 > (timefilterconstant * 2))
2132 {
2133 float volume2 = headingAngleDiff * 2;
2134 if (volume2 > 1)
2135 {
2136 volume2 = 1;
2137 }
2138
2139 m_SoundOffset = headingAngleDiff / 1.8;
2140 if (m_SoundOffset < 0.1)
2141 {
2142 m_SoundOffset = 0.1;
2143 }
2144 if (m_SoundOffset > 0.3)
2145 {
2146 m_SoundOffset = 0.3;
2147 }
2148
2149 string soundSetName2 = "walkProne_noHS_asphalt_ext_Char_SoundSet";
2150 string surfaceType = GetSurfaceType();
2151
2152 if (surfaceType != "")
2153 {
2154 string movementSurfaceType = "walkProne_" + surfaceType;
2155
2156 string path2 = "CfgSoundTables CfgStepSoundTables walkProne_noHS_Char_LookupTable";
2157 int soundCount2 = GetGame().ConfigGetChildrenCount(path2);
2158
2159 for (int i2 = 0; i2 < soundCount2; i2++)
2160 {
2161 string name2 = "";
2162 GetGame().ConfigGetChildName(path2, i2, name2);
2163
2164 if (name2 == movementSurfaceType)
2165 {
2166 TStringArray stringArray2 = new TStringArray();
2167 GetGame().ConfigGetTextArray(path2 + " " + name2 + " soundSets", stringArray2);
2168 soundSetName2 = stringArray2.Get(0);
2169
2170 delete stringArray2;
2171 }
2172 }
2173 }
2174
2175 SoundParams soundParams2 = new SoundParams(soundSetName2);
2176 SoundObjectBuilder soundObjectBuilder2 = new SoundObjectBuilder(soundParams2);
2177
2178 if (soundObjectBuilder2 != NULL)
2179 {
2180 SoundObject soundObject2 = soundObjectBuilder2.BuildSoundObject();
2181
2182 if (soundObject2 != NULL)
2183 {
2184 soundObject2.SetPosition(GetPosition());
2185
2186 AbstractWave wave2 = GetGame().GetSoundScene().Play3D(soundObject2, soundObjectBuilder2);
2187 wave2.SetStartOffset(m_SoundOffset);
2188 wave2.SetVolumeRelative(volume2);
2189
2191 m_LastHeadingAngleBlock2 = headingAngle;
2192 }
2193 }
2194 }
2195
2196 m_LastHeadingAngle = headingAngle;
2197 }
2198 }
2199 }
class LogManager EntityAI
PlayerSpawnPresetDiscreteItemSetSlotData name
one set for cargo
ECameraZoomType
Определения ECameraZoomType.c:2
string path
Определения OptionSelectorMultistate.c:142
proto bool ConfigGetChildName(string path, int index, out string name)
Get name of subclass in config class on path.
proto native AbstractSoundScene GetSoundScene()
proto native void ConfigGetTextArray(string path, out TStringArray values)
Get array of strings from config on path.
proto int GetTime()
returns mission time in milliseconds
proto native int ConfigGetChildrenCount(string path)
Get count of subclasses in config class on path.
bool m_Camera3rdPerson
Определения DayZPlayerImplement.c:133
bool m_CameraIronsight
Определения DayZPlayerImplement.c:139
bool m_CameraOpticsAimOverride
Определения DayZPlayerImplement.c:141
bool IsWeaponObstructionBlockingADS()
string GetSurfaceType(SurfaceAnimationBone limbType)
Определения DayZPlayerImplement.c:3203
float m_LastHeadingAngle
Определения DayZPlayerImplement.c:2203
bool m_IsWeapon
Определения DayZPlayerImplement.c:178
bool IsClimbingLadder()
Определения DayZPlayerImplement.c:494
float m_LastHeadingAngleBlock
Определения DayZPlayerImplement.c:2201
bool IsSwimming()
Определения DayZPlayerImplement.c:489
bool m_CameraOptics
Определения DayZPlayerImplement.c:140
void ExitSights()
Определения DayZPlayerImplement.c:418
float m_LastHeadingAngleBlock2
Определения DayZPlayerImplement.c:2202
bool IsInVehicle()
Определения DayZPlayerImplement.c:484
ref HumanMovementState m_MovementState
time step for gradual update of dead screen visibilibty up to full visbility [s]
Определения DayZPlayerImplement.c:116
int m_LastBackSoundTime
Определения DayZPlayerImplement.c:2204
bool m_LiftWeapon_player
Определения DayZPlayerImplement.c:158
int m_LastBackSoundTime2
Определения DayZPlayerImplement.c:2205
bool IsRaised()
Определения DayZPlayerImplement.c:3878
float m_SoundOffset
Определения DayZPlayerImplement.c:2206
ECameraZoomType m_CameraEyeZoomLevel
Определения DayZPlayerImplement.c:138
proto void GetMovement(out float pSpeed, out vector pLocalDirection)
returns pSpeed 0,1..2..3 (idle, walk, run, sprint), local normalized direction vector
proto native bool CameraViewChanged()
1st/3rd person camera view
proto native bool IsZoomToggle()
zooming toggle
proto native void SetVerticalMinimumAimLimit(float value)
sets vertical minimum aim limit for a player
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native bool IsPlayerInStance(int pStanceMask)
-------------— camera additiona functions ----------------------—
proto native CGame GetGame()
array< string > TStringArray
Определения EnScript.c:709
proto native AbstractWave Play3D(SoundObject soundObject, SoundObjectBuilder soundBuilder)
class AbstractSoundScene SoundObjectBuilder(SoundParams soundParams)
void SoundObject(SoundParams soundParams)
class JsonUndergroundAreaTriggerData GetPosition
Определения UndergroundAreaLoader.c:9
void AbstractWave()
Определения Sound.c:167
class SoundObject SoundParams(string name)
proto native void SetPosition(vector position)
Note: Sets the position locally if parented, retrieves globally with the sound offset.

Перекрестные ссылки Math::AbsFloat(), Math::AbsInt(), AbstractWave(), HumanInputController::CameraViewChanged(), CGame::ConfigGetChildName(), CGame::ConfigGetChildrenCount(), CGame::ConfigGetTextArray(), ExitSights(), GetGame(), HumanInputController::GetMovement(), GetPosition, CGame::GetSoundScene(), GetSurfaceType(), CGame::GetTime(), IsClimbingLadder(), IsInVehicle(), IsPlayerInStance(), IsRaised(), IsSwimming(), IsWeaponObstructionBlockingADS(), HumanInputController::IsZoomToggle(), m_Camera3rdPerson, m_CameraEyeZoomLevel, m_CameraIronsight, m_CameraOptics, m_CameraOpticsAimOverride, m_IsWeapon, m_LastBackSoundTime, m_LastBackSoundTime2, m_LastHeadingAngle, m_LastHeadingAngleBlock, m_LastHeadingAngleBlock2, m_LiftWeapon_player, m_MovementState, m_SoundOffset, name, path, AbstractSoundScene::Play3D(), SoundObject::SetPosition(), SetVerticalMinimumAimLimit(), SoundObjectBuilder() и SoundParams().

Используется в CommandHandler().