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

◆ CreateAreaDamage()

void ItemBase::CreateAreaDamage ( string slot_name,
float rotation_angle = 0 )
inlineprotected

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

982 {
983 if ( g_Game && g_Game.IsServer() )
984 {
985 //destroy area damage if some already exists
986 DestroyAreaDamage( slot_name );
987
988 //create new area damage
989 AreaDamageLoopedDeferred_NoVehicle areaDamage = new AreaDamageLoopedDeferred_NoVehicle( this );
990 areaDamage.SetDamageComponentType(AreaDamageComponentTypes.HITZONE);
991
992 vector min_max[2];
993 if ( MemoryPointExists( slot_name + "_min" ) )
994 {
995 min_max[0] = GetMemoryPointPos( slot_name + "_min" );
996 }
997 if ( MemoryPointExists( slot_name + "_max" ) )
998 {
999 min_max[1] = GetMemoryPointPos( slot_name + "_max" );
1000 }
1001
1002 //get proper trigger extents (min<max)
1003 vector extents[2];
1004 GetConstruction().GetTriggerExtents( min_max, extents );
1005
1006 //get box center
1007 vector center;
1008 center = GetConstruction().GetBoxCenter( min_max );
1009 center = ModelToWorld( center );
1010
1011 //rotate center if needed
1012 vector orientation = GetOrientation();;
1013 CalcDamageAreaRotation( rotation_angle, center, orientation );
1014
1015 areaDamage.SetExtents( extents[0], extents[1] );
1016 areaDamage.SetAreaPosition( center );
1017 areaDamage.SetAreaOrientation( orientation );
1018 areaDamage.SetLoopInterval( 1.0 );
1019 areaDamage.SetDeferDuration( 0.2 );
1020 areaDamage.SetHitZones( { "Torso","LeftHand","LeftLeg","LeftFoot","RightHand","RightLeg","RightFoot" } );
1021 areaDamage.SetAmmoName( "BarbedWireHit" );
1022 areaDamage.Spawn();
1023
1024 m_DamageTriggers.Insert( slot_name, areaDamage );
1025 }
1026 }
vector GetOrientation()
Определения AreaDamageManager.c:306
DayZGame g_Game
Определения DayZGame.c:4074
vector orientation
Определения DustKickupEffects.c:21
void DestroyAreaDamage()
Определения FireplaceBase.c:2363
override void SetLoopInterval(float time)
Определения AreaDamageLooped.c:32
override void SetDeferDuration(float time)
Определения AreaDamageLoopedDeferred.c:7
ref map< string, ref AreaDamageManager > m_DamageTriggers
Определения BaseBuildingBase.c:33
Construction GetConstruction()
Определения BaseBuildingBase.c:883
void CalcDamageAreaRotation(float angle_deg, out vector center, out vector orientation)
Определения BaseBuildingBase.c:1028

Перекрестные ссылки CalcDamageAreaRotation(), DestroyAreaDamage(), g_Game, GetConstruction(), GetOrientation(), AreaDamageComponentTypes::HITZONE, m_DamageTriggers, orientation, AreaDamageLoopedDeferred::SetDeferDuration() и AreaDamageLooped::SetLoopInterval().