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

◆ CreateAreaDamage()

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

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

1067 {
1068 if ( GetGame() && GetGame().IsServer() )
1069 {
1070 //destroy area damage if some already exists
1071 DestroyAreaDamage( slot_name );
1072
1073 //create new area damage
1074 AreaDamageLoopedDeferred_NoVehicle areaDamage = new AreaDamageLoopedDeferred_NoVehicle( this );
1075 areaDamage.SetDamageComponentType(AreaDamageComponentTypes.HITZONE);
1076
1077 vector min_max[2];
1078 if ( MemoryPointExists( slot_name + "_min" ) )
1079 {
1080 min_max[0] = GetMemoryPointPos( slot_name + "_min" );
1081 }
1082 if ( MemoryPointExists( slot_name + "_max" ) )
1083 {
1084 min_max[1] = GetMemoryPointPos( slot_name + "_max" );
1085 }
1086
1087 //get proper trigger extents (min<max)
1088 vector extents[2];
1089 GetConstruction().GetTriggerExtents( min_max, extents );
1090
1091 //get box center
1092 vector center;
1093 center = GetConstruction().GetBoxCenter( min_max );
1094 center = ModelToWorld( center );
1095
1096 //rotate center if needed
1097 vector orientation = GetOrientation();;
1098 CalcDamageAreaRotation( rotation_angle, center, orientation );
1099
1100 areaDamage.SetExtents( extents[0], extents[1] );
1101 areaDamage.SetAreaPosition( center );
1102 areaDamage.SetAreaOrientation( orientation );
1103 areaDamage.SetLoopInterval( 1.0 );
1104 areaDamage.SetDeferDuration( 0.2 );
1105 areaDamage.SetHitZones( { "Torso","LeftHand","LeftLeg","LeftFoot","RightHand","RightLeg","RightFoot" } );
1106 areaDamage.SetAmmoName( "BarbedWireHit" );
1107 areaDamage.Spawn();
1108
1109 m_DamageTriggers.Insert( slot_name, areaDamage );
1110 }
1111 }
vector GetOrientation()
Определения AreaDamageManager.c:306
void DestroyAreaDamage()
Определения FireplaceBase.c:2338
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:34
Construction GetConstruction()
Определения BaseBuildingBase.c:955
void CalcDamageAreaRotation(float angle_deg, out vector center, out vector orientation)
Определения BaseBuildingBase.c:1113
proto native CGame GetGame()

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