Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_GameMasterMetaSerializer.c
Go to the documentation of this file.
2class SCR_GameMasterMetaData : PersistentState
3{
4}
5
6class SCR_GameMasterMetaDataSerializer : ScriptedStateSerializer
7{
8 //------------------------------------------------------------------------------------------------
9 override static typename GetTargetType()
10 {
12 }
13
14 //------------------------------------------------------------------------------------------------
15 override ESerializeResult Serialize(notnull Managed instance, notnull SaveContext context)
16 {
17 if (System.IsConsoleApp())
18 return ESerializeResult.DEFAULT; // Do not save on any headless host, no camera there.
19
20 vector camPos, camYPR;
22 if (editorCamera)
23 {
24 camPos = editorCamera.GetOrigin();
25 camYPR = editorCamera.GetYawPitchRoll();
26 }
27
28 if (camPos == vector.Zero && camYPR == vector.Zero)
29 return ESerializeResult.DEFAULT;
30
31 context.WriteValue("version", 1);
32 context.WriteDefault(camPos, vector.Zero);
33 context.WriteDefault(camYPR, vector.Zero);
34 return ESerializeResult.OK;
35 }
36
37 //------------------------------------------------------------------------------------------------
38 override bool Deserialize(notnull Managed instance, notnull LoadContext context)
39 {
40 int version;
41 context.Read(version);
42
44 context.ReadValueDefault("camPos", loader.m_vPosition, Vector(6, 6, 6));
45 context.ReadValueDefault("camYPR", loader.m_vYawPitchRoll, Vector(9, 9, 9));
46 loader.Apply();
47
48 return true;
49 }
50}
51
53{
55
58
59 //------------------------------------------------------------------------------------------------
60 void Apply()
61 {
62 // Ensure the self ref is cleared during system exit
64 s_Self = this;
65
66 SCR_EditorManagerEntity editorManager = SCR_EditorManagerEntity.GetInstance();
67 if (editorManager)
68 {
69 //--- Editor manager exists, load camera directly
70 OnEditorManagerCreated(editorManager);
71 return;
72 }
73
74 //--- Editor manager does not exist yet (e.g., on mission start), wait for it to be created
76 if (core)
77 core.Event_OnEditorManagerInitOwner.Insert(OnEditorManagerCreated);
78 }
79
80 //------------------------------------------------------------------------------------------------
82 {
83 if (newState == EPersistenceSystemState.SHUTDOWN)
84 s_Self = null;
85 }
86
87 //------------------------------------------------------------------------------------------------
88 protected void OnEditorManagerCreated(SCR_EditorManagerEntity editorManager)
89 {
91 if (core)
92 core.Event_OnEditorManagerInitOwner.Remove(OnEditorManagerCreated);
93
94 //--- Wait one frame for editor modes to be initialized
95 GetGame().GetCallqueue().Call(OnEditorManagerCreatedDelayed);
96 }
97
98 //------------------------------------------------------------------------------------------------
100 {
102 if (!editorCameraManager)
103 {
104 s_Self = null;
105 return;
106 }
107
108 SCR_ManualCamera camera = editorCameraManager.GetCamera();
109 if (camera)
110 {
111 //--- Camera exists, load it directly
112 OnCameraCreated(camera);
113 return;
114 }
115
116 //--- Camera does not exist (e.g., editor not opened yet), wait for it to be created
117 editorCameraManager.GetOnCameraCreate().Insert(OnCameraCreated);
118 }
119
120 //------------------------------------------------------------------------------------------------
121 protected void OnCameraCreated(SCR_ManualCamera camera)
122 {
124 editorCameraManager.GetOnCameraCreate().Remove(OnCameraCreated);
125
126 s_Self = null;
127 vector transform[4];
128 Math3D.AnglesToMatrix(m_vYawPitchRoll, transform);
129 transform[3] = m_vPosition;
130 camera.SetTransform(transform);
131 }
132}
class SCR_PersistentThreatSector GetTargetType()
ArmaReforgerScripted GetGame()
Definition game.c:1398
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
static SCR_ManualCamera GetCameraInstance()
ScriptInvokerBase< SCR_CameraEditorComponent_OnCameraCreated > GetOnCameraCreate()
Core component to manage SCR_EditorManagerEntity.
Dummy state proxy to access game master data.
static ref SCR_GameMasterMetaDataLoader s_Self
void OnShutdown(EPersistenceSystemState oldState, EPersistenceSystemState newState)
void OnEditorManagerCreated(SCR_EditorManagerEntity editorManager)
void OnCameraCreated(SCR_ManualCamera camera)
static sealed SCR_PersistenceSystem GetScriptedInstance()
sealed ScriptInvokerBase< SCR_PersistenceSystem_OnStateChanged > GetOnStateChanged()
bool Deserialize(notnull Managed instance, notnull LoadContext context)
ESerializeResult Serialize(notnull Managed instance, notnull SaveContext context)
ESerializeResult
EPersistenceSystemState
proto native vector Vector(float x, float y, float z)