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

◆ CreateAreaDamage()

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

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

1087 {
1088 if ( GetGame() && GetGame().IsServer() )
1089 {
1090 //destroy area damage if some already exists
1091 DestroyAreaDamage( slot_name );
1092
1093 //create new area damage
1094 AreaDamageLoopedDeferred_NoVehicle areaDamage = new AreaDamageLoopedDeferred_NoVehicle( this );
1095 areaDamage.SetDamageComponentType(AreaDamageComponentTypes.HITZONE);
1096
1097 vector min_max[2];
1098 if ( MemoryPointExists( slot_name + "_min" ) )
1099 {
1100 min_max[0] = GetMemoryPointPos( slot_name + "_min" );
1101 }
1102 if ( MemoryPointExists( slot_name + "_max" ) )
1103 {
1104 min_max[1] = GetMemoryPointPos( slot_name + "_max" );
1105 }
1106
1107 //get proper trigger extents (min<max)
1108 vector extents[2];
1109 GetConstruction().GetTriggerExtents( min_max, extents );
1110
1111 //get box center
1112 vector center;
1113 center = GetConstruction().GetBoxCenter( min_max );
1114 center = ModelToWorld( center );
1115
1116 //rotate center if needed
1117 vector orientation = GetOrientation();;
1118 CalcDamageAreaRotation( rotation_angle, center, orientation );
1119
1120 areaDamage.SetExtents( extents[0], extents[1] );
1121 areaDamage.SetAreaPosition( center );
1122 areaDamage.SetAreaOrientation( orientation );
1123 areaDamage.SetLoopInterval( 1.0 );
1124 areaDamage.SetDeferDuration( 0.2 );
1125 areaDamage.SetHitZones( { "Torso","LeftHand","LeftLeg","LeftFoot","RightHand","RightLeg","RightFoot" } );
1126 areaDamage.SetAmmoName( "BarbedWireHit" );
1127 areaDamage.Spawn();
1128
1129 m_DamageTriggers.Insert( slot_name, areaDamage );
1130 }
1131 }
vector GetOrientation()
Определения AreaDamageManager.c:306
void DestroyAreaDamage()
Определения FireplaceBase.c:2345
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:975
void CalcDamageAreaRotation(float angle_deg, out vector center, out vector orientation)
Определения BaseBuildingBase.c:1133
proto native CGame GetGame()

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