57 ref
Timer m_NavmeshTimer;
59 EUndegroundDoorType m_DoorType;
61 EntranceLight m_InteriorLight1;
62 EntranceLight m_InteriorLight2;
63 EntranceLight m_InteriorLight3;
67 m_DoorType = EUndegroundDoorType.MAIN;
68 Land_Underground_Panel.RegisterEntrance(
this);
69 RegisterNetSyncVariableFloat(
"m_AnimPhase", 0,1,5);
81 Land_Underground_Panel.UnregisterEntrance(
this);
83 CleanUpOnDeleteClient();
89 void CleanUpOnDeleteClient()
92 CleanUpOnClosedClient();
96 void CleanUpOnClosedClient();
98 bool CanManipulate(
Param param = null)
103 void Manipulate(
Param param = null)
112 void OnUpdateClient(
float timeSlice);
114 override void EOnPostSimulate(
IEntity other,
float timeSlice)
121 void OnUpdateServer()
123 m_AnimPhase = m_AnimTimerDoorServer.GetValue() / AdjustTime(GetOpeningTime());
124 SetAnimationPhaseNow(
"EntranceDoor",m_AnimPhase);
126 GetGame().GetWorld().UpdatePathgraphDoorByAnimationSourceName(
this,
"EntranceDoor");
133 if (!Land_Underground_Panel.m_Panels)
137 foreach (Land_Underground_Panel p:Land_Underground_Panel.m_Panels)
139 if (p.GetClosestDoor() ==
this)
151 return m_DoorState == state || ( IsInitDoorStateSync() && m_DoorState > state && m_DoorState <= lastValidState);
154 float AdjustTime(
float originalTime,
float adjustedTime = -1)
156 #ifdef DIAG_DEVELOPER
159 if (adjustedTime != -1)
163 if (FeatureTimeAccel.GetFeatureTimeAccelEnabled(ETimeAccelCategories.UNDERGROUND_ENTRANCE))
165 timeAccel = FeatureTimeAccel.GetFeatureTimeAccelValue();
166 return originalTime / timeAccel;
172 float GetOpeningTime()
181 targetState = m_DoorState + 1;
188 m_DoorState = newState;
189 OnDoorStateChangedServer(newState);
207 HandleAudioPlayback(newState, prevState);
208 HandleVisualPlayback(newState, prevState);
210 if (!m_ConnectedPanels)
213 GetConnectedPanels(m_ConnectedPanels);
215 foreach (Land_Underground_Panel p:m_ConnectedPanels)
217 p.OnDoorStateChangedClient(newState, prevState);
221 void OpenServer(
bool force =
false)
223 GetGame().RegisterNetworkStaticObject(
this);
233 void OnFinishedTimerServer();
235 override void OnVariablesSynchronized()
237 super.OnVariablesSynchronized();
239 if (m_DoorState != m_DoorStatePrev)
241 OnDoorStateChangedClient(m_DoorState, m_DoorStatePrev);
242 m_DoorStatePrev = m_DoorState;
246 bool IsInitDoorStateSync()
257 if (
GetGame().IsDedicatedServer())
272 override void GetDebugActions(out TSelectableActionInfoArrayEx outputList)
278 super.GetDebugActions(outputList);
283 if (super.OnAction(action_id, player, ctx))
287 if (action_id ==
EActions.ACTIVATE_ENTITY)
292 else if (action_id ==
EActions.DEACTIVATE_ENTITY)
295 if (!m_AnimTimerDoorServer)
proto native vector Vector(float x, float y, float z)
Vector constructor from components.