Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_CameraLimitedEditorComponent.c
Go to the documentation of this file.
1#ifdef WORKBENCH
2 #define SHOW_DISCLAIMER
3#endif
4
5[ComponentEditorProps(category: "GameScripted/Editor", description: "Limited camera for in-game editor. Works only with SCR_EditorBaseEntity!", icon: "WBData/ComponentEditorProps/componentEditor.png")]
9
17class SCR_CameraLimitedEditorComponent : SCR_CameraEditorComponent
18{
19 [Attribute("", UIWidgets.ResourceNamePicker, "Prefab of class SCR_ManualCamera", "et", category: "Camera")]
20 private ResourceName m_LimitedCameraPrefab;
21
22 protected bool m_bIsLocked;
23 protected bool m_bIsLimited;
24 protected bool m_bIsMultiplayer;
28 protected CharacterControllerComponent m_PlayerController;
29
30#ifdef SHOW_DISCLAIMER
31 private ref DebugTextScreenSpace m_Disclaimer;
32 private float m_fDisclaimerCountdown;
33#endif
34
35 //------------------------------------------------------------------------------------------------
36 override protected ResourceName GetCameraPrefab()
37 {
38 if (!m_editorManager)
39 return ResourceName.Empty;
40
41#ifdef SHOW_DISCLAIMER
42 if (m_bIsLimited)
43 {
44 m_Disclaimer = DebugTextScreenSpace.Create(GetGame().GetWorld(), "", 0, 50, 50, 10, ARGBF(1, 1, 1, 1), ARGBF(1, 0, 0, 0));
45 m_fDisclaimerCountdown = 15;
46 }
47#endif
48
49 if (m_bIsLimited)
50 return m_LimitedCameraPrefab;
51 else
52 return super.GetCameraPrefab();
53 }
54
55 //------------------------------------------------------------------------------------------------
56 override void EOnFrame(IEntity owner, float timeSlice)
57 {
58#ifdef SHOW_DISCLAIMER
59 if (m_Disclaimer)
60 {
61 m_fDisclaimerCountdown -= timeSlice;
62 m_Disclaimer.SetText(string.Format("Armavision camera is restricted around player when no other editor modes are available.\n\nTo unlock it for testing, activate: Debug Menu > Manual Camera > Unlimited Movement\nRestart the editor afterwards.\n\nThis message will disappear in %1 s.", Math.Ceil(m_fDisclaimerCountdown)));
63 if (m_fDisclaimerCountdown < 0)
64 delete m_Disclaimer;
65 }
66#endif
67
69 m_editorManager.Close();
70
71 if (m_bIsLocked)
72 return;
73
74 super.EOnFrame(owner, timeSlice);
75 }
76
77 //------------------------------------------------------------------------------------------------
78 override protected void EOnEditorActivate()
79 {
80 super.EOnEditorActivate();
81 if (m_bIsLocked)
82 SCR_NotificationsComponent.SendLocal(ENotification.EDITOR_PHOTOMODE_IS_LOCKED);
83
84 DiagMenu.RegisterBool(SCR_DebugMenuID.DEBUGUI_MANUAL_CAMERA_UNLIMITED, "", "Unlimited Movement", "Manual Camera");
85 }
86
87 //------------------------------------------------------------------------------------------------
88 override protected void EOnEditorPreActivate()
89 {
90 m_bIsLimited = false;
91 m_Player = ChimeraCharacter.Cast(EntityUtils.GetPlayer());
92 if (m_Player)
93 m_PlayerController = m_Player.GetCharacterController();
94
95 SCR_MissionHeader missionHeader = SCR_MissionHeader.Cast(GetGame().GetMissionHeader());
96 if (missionHeader)
97 m_bIsArmavisionAllowedInMP = missionHeader.m_bIsArmavisionAllowedInMP;
98
100 if (m_editorManager)
101 {
102 m_editorManager.GetOnLimitedChange().Insert(ReplaceCamera);
103 m_bIsLimited = m_editorManager.IsLimited() && !DiagMenu.GetBool(SCR_DebugMenuID.DEBUGUI_MANUAL_CAMERA_UNLIMITED);
104 }
105
106 m_bIsMultiplayer = RplSession.Mode() != RplMode.None;
108 if (m_bIsLocked && (!m_PlayerController || m_PlayerController.IsUnconscious()))
109 m_editorManager.Close();
110
111 super.EOnEditorPreActivate();
112 }
113
114 //------------------------------------------------------------------------------------------------
115 override protected void EOnEditorDeactivate()
116 {
117 super.EOnEditorDeactivate();
118
119 if (m_editorManager)
120 m_editorManager.GetOnLimitedChange().Remove(ReplaceCamera);
121
122 //DiagMenu.Unregister(SCR_DebugMenuID.DEBUGUI_MANUAL_CAMERA_UNLIMITED);
123
124#ifdef SHOW_DISCLAIMER
125 delete m_Disclaimer;
126#endif
127 }
128
129 //------------------------------------------------------------------------------------------------
130 override protected void CreateCamera()
131 {
132 if (m_bIsLocked)
133 {
134 delete m_Camera;
135 return;
136 }
137
138 super.CreateCamera();
139 }
140}
SCR_DebugMenuID
This enum contains all IDs for DiagMenu entries added in script.
Definition DebugMenuID.c:4
ENotification
ArmaReforgerScripted GetGame()
Definition game.c:1398
RplMode
Mode of replication.
Definition RplMode.c:9
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
bool m_bIsLocked
SCR_ManualCamera m_Camera
ChimeraCharacter m_Player
bool m_bIsArmavisionAllowedInMP
SCR_EditorManagerEntity m_editorManager
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
SCR_FastTravelComponentClass m_PlayerController
Diagnostic and developer menu system.
Definition DiagMenu.c:18
Definition Math.c:13
override void EOnFrame(IEntity owner, float timeSlice)
SCR_FieldOfViewSettings Attribute
proto int ARGBF(float fa, float fr, float fg, float fb)
Converts <0.0, 1.0> ARGB into color.