DayZ 1.24
Loading...
Searching...
No Matches
ActionCreateIndoorFireplace Class Reference
Inheritance diagram for ActionCreateIndoorFireplace:
[legend]
Collaboration diagram for ActionCreateIndoorFireplace:
[legend]

Private Member Functions

void ActionCreateIndoorFireplace ()
 
override void CreateConditionComponents ()
 
override bool ActionCondition (PlayerBase player, ActionTarget target, ItemBase item)
 
override void OnExecuteServer (ActionData action_data)
 

Detailed Description

Definition at line 1 of file ActionCreateIndoorFireplace.c.

Constructor & Destructor Documentation

◆ ActionCreateIndoorFireplace()

void ActionCreateIndoorFireplace::ActionCreateIndoorFireplace ( )
inlineprivate

Definition at line 3 of file ActionCreateIndoorFireplace.c.

4 {
5 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_OPENDOORFW;
6 m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT;
8 m_Text = "#place_object";
9 }
string m_Text
Definition ActionBase.c:49
float m_SpecialtyWeight
Definition ActionBase.c:68
int m_StanceMask
Definition ActionBase.c:53
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:597

References AnimatedActionBase::m_CommandUID, m_SpecialtyWeight, m_StanceMask, m_Text, and UASoftSkillsWeight::PRECISE_LOW.

Member Function Documentation

◆ ActionCondition()

override bool ActionCreateIndoorFireplace::ActionCondition ( PlayerBase player,
ActionTarget target,
ItemBase item )
inlineprivate

Definition at line 17 of file ActionCreateIndoorFireplace.c.

18 {
19 if (!target) return false;
20
21 Object target_object = target.GetObject();
22 string action_selection = target_object.GetActionComponentName(target.GetComponentIndex());
24
25 if (target_object && building && action_selection.Contains(FireplaceIndoor.FIREPOINT_ACTION_SELECTION))
26 {
27 if (!IsInReach(player, target, UAMaxDistances.DEFAULT)) return false;
28
30 int fire_point_index = FireplaceIndoor.GetFirePointIndex(action_selection);
31 if (FireplaceIndoor.CanPlaceFireplaceInSelectedSpot(building, fire_point_index, fire_point_pos_world, fire_point_rot_world))
32 {
33 float rot_deg = 0.0;
34 if (building.HasSelection(FireplaceIndoor.FIREPOINT_PLACE_ROT + fire_point_index.ToString()))
35 {
37 diff[1] = 0.0;
38 diff.Normalize();
39 float dotp = vector.Dot("0 0 1", diff);
41 if ((diff[0] < 0) && (diff[2] < 0))
42 rot_deg = 360.0 - rot_deg;
43 else if ((diff[0] < 0) && (diff[2] > 0))
44 rot_deg = 360.0 - rot_deg;
45
46 //Debug.DrawArrow( fire_point_pos_world, fire_point_pos_world + diff );
47 }
48
50 if (fire_point_dist <= 2)
51 {
52 player.SetLastFirePoint(fire_point_pos_world);
53 player.SetLastFirePointIndex(fire_point_index);
54 player.SetLastFirePointRot(rot_deg);
55 return true;
56 }
57 }
58 }
59
60 return false;
61 }
bool IsInReach(PlayerBase player, ActionTarget target, float maxDistance=1.0)
Definition ActionBase.c:856
Definition EnMath.c:7
const float DEFAULT
static float Dot(vector v1, vector v2)
Returns Dot product of vector v1 and vector v2.
Definition EnConvert.c:271
static proto native float Distance(vector v1, vector v2)
Returns the distance between tips of two 3D vectors.
static proto float Acos(float c)
Returns angle in radians from cosinus.
static const float RAD2DEG
Definition EnMath.c:16

References Math::Acos(), UAMaxDistances::DEFAULT, vector::Distance(), vector::Dot(), IsInReach(), and Math::RAD2DEG.

◆ CreateConditionComponents()

override void ActionCreateIndoorFireplace::CreateConditionComponents ( )
inlineprivate

Definition at line 11 of file ActionCreateIndoorFireplace.c.

12 {
15 }
ref CCIBase m_ConditionItem
Definition ActionBase.c:55
ref CCTBase m_ConditionTarget
Definition ActionBase.c:56

References m_ConditionItem, and m_ConditionTarget.

◆ OnExecuteServer()

override void ActionCreateIndoorFireplace::OnExecuteServer ( ActionData action_data)
inlineprivate

Definition at line 63 of file ActionCreateIndoorFireplace.c.

64 {
65 Object obj = GetGame().CreateObjectEx("FireplaceIndoor", action_data.m_Player.GetLastFirePoint(), ECE_PLACE_ON_SURFACE);
66
67 int m_FirePointIndex = action_data.m_Player.GetLastFirePointIndex();
68 float m_FireplaceRot = action_data.m_Player.GetLastFirePointRot();
69 vector smoke_point_pos = action_data.m_Target.GetObject().GetSelectionPositionMS(FireplaceIndoor.FIREPOINT_SMOKE_POSITION + m_FirePointIndex.ToString());
70 vector smoke_point_pos_world = action_data.m_Target.GetObject().ModelToWorld(smoke_point_pos);
72
73 FireplaceIndoor fp_indoor = FireplaceIndoor.Cast(obj);
74 if (fp_indoor)
75 {
76 fp_indoor.SetFirePointIndex(m_FirePointIndex);
77 fp_indoor.SetSmokePointPosition(m_SmokePosition);
78
81 fp_indoor.SetOrientation(fprot);
82
83 fp_indoor.Synchronize();
84
85 //move item to target fireplace
86 action_data.m_Player.ServerTakeEntityToTargetAttachment(fp_indoor, action_data.m_MainItem);
87 }
88 }
ActionPlaceFireplaceIndoor m_FirePointIndex
vector m_SmokePosition
float m_FireplaceRot
const int ECE_PLACE_ON_SURFACE
static const vector Zero
Definition EnConvert.c:110
proto native CGame GetGame()

References ECE_PLACE_ON_SURFACE, GetGame(), m_FireplaceRot, m_FirePointIndex, m_SmokePosition, and vector::Zero.


The documentation for this class was generated from the following file: