Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_WorldEntityDelegateEditorComponent.c
Go to the documentation of this file.
1
[
ComponentEditorProps
(
category
:
"GameScripted/Editor"
, description:
""
, icon:
"WBData/ComponentEditorProps/componentEditor.png"
)]
2
class
SCR_WorldEntityDelegateEditorComponentClass
:
SCR_BaseEditorComponentClass
3
{
4
static
override
array<typename> Requires(
IEntityComponentSource
src)
5
{
6
return
{
SCR_MenuLayoutEditorComponent
};
7
}
8
};
9
13
class
SCR_WorldEntityDelegateEditorComponent
:
SCR_BaseEditorComponent
14
{
15
[
Attribute
(
params
:
"et"
)]
16
protected
ResourceName
m_EntityPrefab
;
17
18
protected
SCR_MenuLayoutEditorComponent
m_MenuLayout
;
19
protected
SCR_EditableWorldEntityComponent
m_Delegate
;
20
protected
IEntity
m_TraceEntity
;
21
protected
bool
m_bHasDelegate
;
22
protected
vector
m_vLocalOffset
;
23
28
void
PerformFirstAction
(
IEntity
owner)
29
{
30
RplComponent rplComponent = RplComponent.Cast(owner.
FindComponent
(RplComponent));
31
if
(rplComponent)
32
{
33
RplId
rplId = rplComponent.Id();
34
Rpc
(
PerformFirstActionServer
, rplId);
35
}
36
else
37
{
38
// Could be a door. They are not necessarily replicated.
39
BaseDoorComponent
doorComponent =
BaseDoorComponent
.Cast(owner.
FindComponent
(
BaseDoorComponent
));
40
if
(doorComponent)
41
Rpc
(
PerformFirstActionServer_EntityID
, owner.
GetID
());
42
}
43
}
44
45
[
RplRpc
(
RplChannel
.Reliable,
RplRcver
.Server)]
46
protected
void
PerformFirstActionServer
(
RplId
rplId)
47
{
48
PerformFirstActionBroadcast
(rplId);
49
Rpc
(
PerformFirstActionBroadcast
, rplId);
50
}
51
[
RplRpc
(
RplChannel
.Reliable,
RplRcver
.Server)]
52
protected
void
PerformFirstActionServer_EntityID
(
EntityID
entId)
53
{
54
PerformFirstActionBroadcast_EntityID
(entId);
55
Rpc
(
PerformFirstActionBroadcast_EntityID
, entId);
56
}
57
58
[
RplRpc
(
RplChannel
.Reliable,
RplRcver
.Broadcast)]
59
protected
void
PerformFirstActionBroadcast
(
RplId
rplId)
60
{
61
RplComponent rplComponent = RplComponent.Cast(
Replication
.FindItem(rplId));
62
if
(rplComponent == null)
63
return
;
64
IEntity
owner = rplComponent.GetEntity();
65
BaseActionsManagerComponent
actionsManager =
BaseActionsManagerComponent
.Cast(owner.
FindComponent
(
BaseActionsManagerComponent
));
66
ScriptedUserAction
action =
ScriptedUserAction
.Cast(actionsManager.GetFirstAction());
67
action.PerformAction(owner,
GetOwner
());
68
}
69
[
RplRpc
(
RplChannel
.Reliable,
RplRcver
.Broadcast)]
70
protected
void
PerformFirstActionBroadcast_EntityID
(
EntityID
entId)
71
{
72
IEntity
owner =
GetGame
().
GetWorld
().FindEntityByID(entId);
73
if
(owner == null)
74
return
;
75
BaseActionsManagerComponent
actionsManager =
BaseActionsManagerComponent
.Cast(owner.
FindComponent
(
BaseActionsManagerComponent
));
76
ScriptedUserAction
action =
ScriptedUserAction
.Cast(actionsManager.GetFirstAction());
77
action.PerformAction(owner,
GetOwner
());
78
}
79
80
override
protected
void
EOnFrame
(
IEntity
owner,
float
timeSlice)
81
{
82
IEntity
traceEntity =
m_MenuLayout
.GetTraceEntity();
83
84
if
(traceEntity !=
m_TraceEntity
)
85
{
86
//--- Check if world entity deserves a delegate
87
m_bHasDelegate
=
false
;
88
if
(traceEntity)
89
{
90
SCR_EditableEntityComponent
editableEntity =
SCR_EditableEntityComponent
.
GetEditableEntity
(traceEntity);
91
if
(!editableEntity || !editableEntity.
HasEntityState
(
EEditableEntityState
.INTERACTIVE))
92
{
93
BaseActionsManagerComponent
actionsManager =
BaseActionsManagerComponent
.Cast(traceEntity.
FindComponent
(
BaseActionsManagerComponent
));
94
if
(actionsManager && actionsManager.GetActionsCount() == 1)
95
{
96
ScriptedUserAction
action =
ScriptedUserAction
.Cast(actionsManager.GetFirstAction());
97
m_bHasDelegate
= action && action.
CanBePerformed
(
GetManager
());
98
99
if
(
m_bHasDelegate
)
100
{
101
//--- Get action offset
102
array<UserActionContext> contexts = {};
103
actionsManager.GetContextList(contexts);
104
vector
transform[4];
105
contexts[0].GetTransformationModel(transform);
106
m_vLocalOffset
= transform[3];
107
}
108
}
109
}
110
}
111
112
m_TraceEntity
= traceEntity;
113
114
if
(
m_bHasDelegate
)
115
{
116
m_Delegate
.RestoreParentEntity();
117
m_Delegate
.SetOwnerScripted(
GenericEntity
.Cast(
m_TraceEntity
));
118
}
119
else
120
{
121
m_Delegate
.RemoveParentEntity();
122
m_Delegate
.SetOwnerScripted(null);
123
}
124
}
125
126
//--- Update position to bounding center
127
if
(
m_TraceEntity
&&
m_bHasDelegate
)
128
{
129
vector
pos =
m_TraceEntity
.CoordToParent(
m_vLocalOffset
);
130
m_Delegate
.GetOwner().SetOrigin(pos);
131
132
//-- Set delegate entity as hovered when just hovering over mesh
133
if
(traceEntity ==
m_TraceEntity
)
134
{
135
SCR_HoverEditableEntityFilter
hoverFilter =
SCR_HoverEditableEntityFilter
.Cast(
SCR_HoverEditableEntityFilter
.GetInstance(
EEditableEntityState
.HOVER));
136
hoverFilter.
SetEntityUnderCursor
(
m_Delegate
,
true
);
137
}
138
}
139
}
140
override
protected
void
EOnEditorActivate
()
141
{
142
IEntity
delegateEntity =
GetGame
().SpawnEntityPrefab(
Resource
.Load(
m_EntityPrefab
));
143
m_Delegate
= SCR_EditableWorldEntityComponent.Cast(
SCR_EditableEntityComponent
.
GetEditableEntity
(delegateEntity));
144
if
(!
m_Delegate
)
145
{
146
Print
(
string
.Format(
"Cannot create world entity delegate from prefab @\"%1\", it doesn't have SCR_EditableWorldEntityComponent!"
),
LogLevel
.WARNING);
147
RplComponent.DeleteRplEntity(delegateEntity,
false
);
148
return
;
149
}
150
151
SetEventMask
(
GetOwner
(),
EntityEvent
.FRAME);
152
m_MenuLayout
=
SCR_MenuLayoutEditorComponent
.Cast(
SCR_MenuLayoutEditorComponent
.GetInstance(
SCR_MenuLayoutEditorComponent
,
true
));
153
}
154
override
protected
void
EOnEditorDeactivate
()
155
{
156
if
(
m_Delegate
)
157
m_Delegate
.Delete();
158
ClearEventMask
(
GetOwner
(),
EntityEvent
.FRAME);
159
}
160
};
GetGame
ArmaReforgerScripted GetGame()
Definition
game.c:1398
ComponentEditorProps
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
Definition
SCR_AIGroupUtilityComponent.c:12
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
category
params category
Definition
SCR_VehicleDamageManagerComponent.c:302
BaseActionsManagerComponent
Definition
BaseActionsManagerComponent.c:13
BaseDoorComponent
Definition
BaseDoorComponent.c:13
BaseUserAction::CanBePerformed
proto external bool CanBePerformed(IEntity user)
Can this action be performed by the user?
EntityID
Definition
EnEntity.c:7
GenericComponent::ClearEventMask
proto external int ClearEventMask(notnull IEntity owner, int mask)
GenericComponent::SetEventMask
proto external int SetEventMask(notnull IEntity owner, int mask)
GenericComponent::Rpc
void Rpc(func method, void p0=NULL, void p1=NULL, void p2=NULL, void p3=NULL, void p4=NULL, void p5=NULL, void p6=NULL, void p7=NULL)
GenericEntity
Definition
GenericEntity.c:16
IEntityComponentSource
Definition
IEntityComponentSource.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
IEntity::GetWorld
proto external BaseWorld GetWorld()
IEntity::GetID
proto external EntityID GetID()
Replication
Main replication API.
Definition
Replication.c:14
Resource
Object holding reference to resource. In destructor release the resource.
Definition
Resource.c:25
ResourceName
Definition
ResourceName.c:13
RplId
Replication item identifier.
Definition
RplId.c:14
SCR_BaseEditorComponentClass
Definition
SCR_BaseEditorComponent.c:3
SCR_BaseEditorComponent::SCR_BaseEditorComponent
void SCR_BaseEditorComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
Definition
SCR_BaseEditorComponent.c:683
SCR_BaseEditorComponent::GetManager
SCR_EditorManagerEntity GetManager()
Definition
SCR_BaseEditorComponent.c:459
SCR_EditableEntityComponent
Definition
SCR_EditableEntityComponent.c:14
SCR_EditableEntityComponent::HasEntityState
bool HasEntityState(EEditableEntityState state)
Definition
SCR_EditableEntityComponent.c:1590
SCR_EditableEntityComponent::GetEditableEntity
static SCR_EditableEntityComponent GetEditableEntity(IEntity owner)
Definition
SCR_EditableEntityComponent.c:919
SCR_HoverEditableEntityFilter
Definition
SCR_HoverEditableEntityFilter.c:7
SCR_HoverEditableEntityFilter::SetEntityUnderCursor
void SetEntityUnderCursor(SCR_EditableEntityComponent entity, bool isDelegate=false)
Definition
SCR_HoverEditableEntityFilter.c:49
SCR_MenuLayoutEditorComponent
Definition
SCR_MenuLayoutEditorComponent.c:16
SCR_WorldEntityDelegateEditorComponentClass
Definition
SCR_WorldEntityDelegateEditorComponent.c:3
SCR_WorldEntityDelegateEditorComponent
Definition
SCR_WorldEntityDelegateEditorComponent.c:14
SCR_WorldEntityDelegateEditorComponent::m_EntityPrefab
ResourceName m_EntityPrefab
Definition
SCR_WorldEntityDelegateEditorComponent.c:16
SCR_WorldEntityDelegateEditorComponent::m_bHasDelegate
bool m_bHasDelegate
Definition
SCR_WorldEntityDelegateEditorComponent.c:21
SCR_WorldEntityDelegateEditorComponent::PerformFirstActionServer
void PerformFirstActionServer(RplId rplId)
Definition
SCR_WorldEntityDelegateEditorComponent.c:46
SCR_WorldEntityDelegateEditorComponent::m_Delegate
SCR_EditableWorldEntityComponent m_Delegate
Definition
SCR_WorldEntityDelegateEditorComponent.c:19
SCR_WorldEntityDelegateEditorComponent::m_vLocalOffset
vector m_vLocalOffset
Definition
SCR_WorldEntityDelegateEditorComponent.c:22
SCR_WorldEntityDelegateEditorComponent::PerformFirstAction
void PerformFirstAction(IEntity owner)
Definition
SCR_WorldEntityDelegateEditorComponent.c:28
SCR_WorldEntityDelegateEditorComponent::EOnEditorDeactivate
void EOnEditorDeactivate()
Definition
SCR_WorldEntityDelegateEditorComponent.c:154
SCR_WorldEntityDelegateEditorComponent::PerformFirstActionBroadcast_EntityID
void PerformFirstActionBroadcast_EntityID(EntityID entId)
Definition
SCR_WorldEntityDelegateEditorComponent.c:70
SCR_WorldEntityDelegateEditorComponent::PerformFirstActionBroadcast
void PerformFirstActionBroadcast(RplId rplId)
Definition
SCR_WorldEntityDelegateEditorComponent.c:59
SCR_WorldEntityDelegateEditorComponent::m_MenuLayout
SCR_MenuLayoutEditorComponent m_MenuLayout
Definition
SCR_WorldEntityDelegateEditorComponent.c:18
SCR_WorldEntityDelegateEditorComponent::m_TraceEntity
IEntity m_TraceEntity
Definition
SCR_WorldEntityDelegateEditorComponent.c:20
SCR_WorldEntityDelegateEditorComponent::EOnEditorActivate
void EOnEditorActivate()
Definition
SCR_WorldEntityDelegateEditorComponent.c:140
SCR_WorldEntityDelegateEditorComponent::EOnFrame
void EOnFrame(IEntity owner, float timeSlice)
Definition
SCR_WorldEntityDelegateEditorComponent.c:80
SCR_WorldEntityDelegateEditorComponent::PerformFirstActionServer_EntityID
void PerformFirstActionServer_EntityID(EntityID entId)
Definition
SCR_WorldEntityDelegateEditorComponent.c:52
ScriptComponent::GetOwner
proto external GenericEntity GetOwner()
Get owner entity.
ScriptedUserAction
Definition
ScriptedUserAction.c:13
vector
Definition
vector.c:13
Print
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
LogLevel
Enum with severity of the logging message.
Definition
LogLevel.c:14
EEditableEntityState
EEditableEntityState
Definition
EEditableEntityState.c:38
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
EntityEvent
EntityEvent
Various entity events.
Definition
EntityEvent.c:14
RplRpc
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
Definition
EnNetwork.c:95
RplRcver
RplRcver
Definition
RplRcver.c:59
RplChannel
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.
Definition
RplChannel.c:14
scripts
Game
Editor
Components
Editor
SCR_WorldEntityDelegateEditorComponent.c
Generated by
1.17.0