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_ScenarioFrameworkTaskDestroyObject.c
Go to the documentation of this file.
1
class
SCR_TaskDestroyObjectClass
:
SCR_ScenarioFrameworkTaskClass
2
{
3
};
4
5
class
SCR_TaskDestroyObject
:
SCR_ScenarioFrameworkTask
6
{
7
8
//------------------------------------------------------------------------------------------------
10
void
OnObjectDamage(
EDamageState
state)
11
{
12
if
(state !=
EDamageState
.DESTROYED || !
m_Asset
)
13
return
;
14
15
SCR_DamageManagerComponent objectDmgManager = SCR_DamageManagerComponent.GetDamageManager(
m_Asset
);
16
if
(objectDmgManager)
17
{
18
objectDmgManager.GetOnDamageStateChanged().Remove(OnObjectDamage);
19
SCR_ScenarioFrameworkSystem
.
GetCallQueuePausable
().Remove(CheckEngineDrowned);
20
21
VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(
m_Asset
.FindComponent(VehicleControllerComponent));
22
if
(vehicleController)
23
vehicleController.GetOnEngineStop().Remove(CheckEngineDrowned);
24
}
25
26
m_LayerTask
.ProcessLayerTaskState(
SCR_ETaskState
.COMPLETED);
27
}
28
29
//------------------------------------------------------------------------------------------------
31
void
CheckEngineDrowned()
32
{
33
if
(!
m_Asset
)
34
return
;
35
36
VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(
m_Asset
.FindComponent(VehicleControllerComponent));
37
if
(vehicleController && vehicleController.GetEngineDrowned())
38
{
39
vehicleController.GetOnEngineStop().Remove(CheckEngineDrowned);
40
SCR_ScenarioFrameworkSystem
.
GetCallQueuePausable
().Remove(CheckEngineDrowned);
41
42
SCR_DamageManagerComponent objectDmgManager = SCR_DamageManagerComponent.GetDamageManager(
m_Asset
);
43
if
(objectDmgManager)
44
objectDmgManager.GetOnDamageStateChanged().Remove(OnObjectDamage);
45
46
m_LayerTask
.ProcessLayerTaskState(
SCR_ETaskState
.COMPLETED);
47
}
48
}
49
50
//------------------------------------------------------------------------------------------------
53
override
void
HookTaskAsset(
IEntity
object
)
54
{
55
if
(!
object
)
56
return
;
57
58
super.HookTaskAsset(
object
);
59
60
SCR_DamageManagerComponent objectDmgManager = SCR_DamageManagerComponent.GetDamageManager(
m_Asset
);
61
if
(objectDmgManager)
62
objectDmgManager.GetOnDamageStateChanged().Insert(OnObjectDamage);
63
64
if
(
Vehicle
.Cast(
m_Asset
))
65
{
66
VehicleControllerComponent vehicleController = VehicleControllerComponent.Cast(
m_Asset
.FindComponent(VehicleControllerComponent));
67
if
(vehicleController)
68
vehicleController.GetOnEngineStop().Insert(CheckEngineDrowned);
69
//---- REFACTOR NOTE START: This code will need to be refactored as current implementation is not conforming to the standards ----
70
71
// Since there is no invoker and no reliable way how to tackle drowned vehicles, in order to make it reliable,
72
// We cannot solely rely on GetOnEngineStop because vehicle could have been pushed/moved into the water without started engine.
73
SCR_ScenarioFrameworkSystem
.
GetCallQueuePausable
().CallLater(CheckEngineDrowned, 5000,
true
);
74
75
//---- REFACTOR NOTE END ----
76
}
77
}
78
}
SCR_ETaskState
SCR_ETaskState
Definition
SCR_Task.c:3
IEntity
Definition
IEntity.c:13
SCR_ScenarioFrameworkSystem
Definition
SCR_ScenarioFrameworkSystem.c:2
SCR_ScenarioFrameworkSystem::GetCallQueuePausable
static ScriptCallQueue GetCallQueuePausable()
Definition
SCR_ScenarioFrameworkSystem.c:87
SCR_ScenarioFrameworkTaskClass
Definition
SCR_ScenarioFrameworkTask.c:2
SCR_ScenarioFrameworkTask
Definition
SCR_ScenarioFrameworkTask.c:6
SCR_ScenarioFrameworkTask::m_Asset
IEntity m_Asset
Definition
SCR_ScenarioFrameworkTask.c:7
SCR_ScenarioFrameworkTask::m_LayerTask
SCR_ScenarioFrameworkLayerTask m_LayerTask
Definition
SCR_ScenarioFrameworkTask.c:8
SCR_TaskDestroyObjectClass
Definition
SCR_ScenarioFrameworkTaskDestroyObject.c:2
SCR_TaskDestroyObject
Definition
SCR_ScenarioFrameworkTaskDestroyObject.c:6
Vehicle
enum EPhysicsLayerPresets Vehicle
Definition
gameLib.c:24
EDamageState
EDamageState
Definition
EDamageState.c:13
scripts
Game
ScenarioFramework
Tasks
SCR_ScenarioFrameworkTaskDestroyObject.c
Generated by
1.17.0