Add LateFixedUpdate event for scripts
This commit is contained in:
@@ -65,6 +65,7 @@ Action Engine::FixedUpdate;
|
|||||||
Action Engine::Update;
|
Action Engine::Update;
|
||||||
TaskGraph* Engine::UpdateGraph = nullptr;
|
TaskGraph* Engine::UpdateGraph = nullptr;
|
||||||
Action Engine::LateUpdate;
|
Action Engine::LateUpdate;
|
||||||
|
Action Engine::LateFixedUpdate;
|
||||||
Action Engine::Draw;
|
Action Engine::Draw;
|
||||||
Action Engine::Pause;
|
Action Engine::Pause;
|
||||||
Action Engine::Unpause;
|
Action Engine::Unpause;
|
||||||
@@ -198,6 +199,7 @@ int32 Engine::Main(const Char* cmdLine)
|
|||||||
if (Time::OnBeginPhysics())
|
if (Time::OnBeginPhysics())
|
||||||
{
|
{
|
||||||
OnFixedUpdate();
|
OnFixedUpdate();
|
||||||
|
OnLateFixedUpdate();
|
||||||
Time::OnEndPhysics();
|
Time::OnEndPhysics();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,6 +275,17 @@ void Engine::OnFixedUpdate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Engine::OnLateFixedUpdate()
|
||||||
|
{
|
||||||
|
PROFILE_CPU_NAMED("Late Fixed Update");
|
||||||
|
|
||||||
|
// Call event
|
||||||
|
LateFixedUpdate();
|
||||||
|
|
||||||
|
// Update services
|
||||||
|
EngineService::OnLateFixedUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
void Engine::OnUpdate()
|
void Engine::OnUpdate()
|
||||||
{
|
{
|
||||||
PROFILE_CPU_NAMED("Update");
|
PROFILE_CPU_NAMED("Update");
|
||||||
|
|||||||
@@ -54,6 +54,11 @@ public:
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
static Action LateUpdate;
|
static Action LateUpdate;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Event called after engine update.
|
||||||
|
/// </summary>
|
||||||
|
static Action LateFixedUpdate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Event called during frame rendering and can be used to invoke custom rendering with GPUDevice.
|
/// Event called during frame rendering and can be used to invoke custom rendering with GPUDevice.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -107,6 +112,11 @@ public:
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
static void OnLateUpdate();
|
static void OnLateUpdate();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Late fixed update callback.
|
||||||
|
/// </summary>
|
||||||
|
static void OnLateFixedUpdate();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Draw callback.
|
/// Draw callback.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ static bool CompareEngineServices(EngineService* const& a, EngineService* const&
|
|||||||
DEFINE_ENGINE_SERVICE_EVENT(FixedUpdate);
|
DEFINE_ENGINE_SERVICE_EVENT(FixedUpdate);
|
||||||
DEFINE_ENGINE_SERVICE_EVENT(Update);
|
DEFINE_ENGINE_SERVICE_EVENT(Update);
|
||||||
DEFINE_ENGINE_SERVICE_EVENT(LateUpdate);
|
DEFINE_ENGINE_SERVICE_EVENT(LateUpdate);
|
||||||
|
DEFINE_ENGINE_SERVICE_EVENT(LateFixedUpdate);
|
||||||
DEFINE_ENGINE_SERVICE_EVENT(Draw);
|
DEFINE_ENGINE_SERVICE_EVENT(Draw);
|
||||||
DEFINE_ENGINE_SERVICE_EVENT_INVERTED(BeforeExit);
|
DEFINE_ENGINE_SERVICE_EVENT_INVERTED(BeforeExit);
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ public:
|
|||||||
DECLARE_ENGINE_SERVICE_EVENT(void, FixedUpdate);
|
DECLARE_ENGINE_SERVICE_EVENT(void, FixedUpdate);
|
||||||
DECLARE_ENGINE_SERVICE_EVENT(void, Update);
|
DECLARE_ENGINE_SERVICE_EVENT(void, Update);
|
||||||
DECLARE_ENGINE_SERVICE_EVENT(void, LateUpdate);
|
DECLARE_ENGINE_SERVICE_EVENT(void, LateUpdate);
|
||||||
|
DECLARE_ENGINE_SERVICE_EVENT(void, LateFixedUpdate);
|
||||||
DECLARE_ENGINE_SERVICE_EVENT(void, Draw);
|
DECLARE_ENGINE_SERVICE_EVENT(void, Draw);
|
||||||
DECLARE_ENGINE_SERVICE_EVENT(void, BeforeExit);
|
DECLARE_ENGINE_SERVICE_EVENT(void, BeforeExit);
|
||||||
DECLARE_ENGINE_SERVICE_EVENT(void, Dispose);
|
DECLARE_ENGINE_SERVICE_EVENT(void, Dispose);
|
||||||
|
|||||||
@@ -108,6 +108,13 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called every fixed framerate frame (after FixedUpdate) if object is enabled.
|
||||||
|
/// </summary>
|
||||||
|
API_FUNCTION(Attributes = "NoAnimate") virtual void OnLateFixedUpdate()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Called during drawing debug shapes in editor. Use <see cref="DebugDraw"/> to draw debug shapes and other visualization.
|
/// Called during drawing debug shapes in editor. Use <see cref="DebugDraw"/> to draw debug shapes and other visualization.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public:
|
|||||||
void Update() override;
|
void Update() override;
|
||||||
void LateUpdate() override;
|
void LateUpdate() override;
|
||||||
void FixedUpdate() override;
|
void FixedUpdate() override;
|
||||||
|
void LateFixedUpdate() override;
|
||||||
void Draw() override;
|
void Draw() override;
|
||||||
void BeforeExit() override;
|
void BeforeExit() override;
|
||||||
void Dispose() override;
|
void Dispose() override;
|
||||||
@@ -100,6 +101,7 @@ namespace
|
|||||||
MMethod* _method_Update = nullptr;
|
MMethod* _method_Update = nullptr;
|
||||||
MMethod* _method_LateUpdate = nullptr;
|
MMethod* _method_LateUpdate = nullptr;
|
||||||
MMethod* _method_FixedUpdate = nullptr;
|
MMethod* _method_FixedUpdate = nullptr;
|
||||||
|
MMethod* _method_LateFixedUpdate = nullptr;
|
||||||
MMethod* _method_Draw = nullptr;
|
MMethod* _method_Draw = nullptr;
|
||||||
MMethod* _method_Exit = nullptr;
|
MMethod* _method_Exit = nullptr;
|
||||||
Array<BinaryModule*, InlinedAllocation<64>> _nonNativeModules;
|
Array<BinaryModule*, InlinedAllocation<64>> _nonNativeModules;
|
||||||
@@ -210,6 +212,12 @@ void ScriptingService::FixedUpdate()
|
|||||||
INVOKE_EVENT(FixedUpdate);
|
INVOKE_EVENT(FixedUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScriptingService::LateFixedUpdate()
|
||||||
|
{
|
||||||
|
PROFILE_CPU_NAMED("Scripting::LateFixedUpdate");
|
||||||
|
INVOKE_EVENT(LateFixedUpdate);
|
||||||
|
}
|
||||||
|
|
||||||
void ScriptingService::Draw()
|
void ScriptingService::Draw()
|
||||||
{
|
{
|
||||||
PROFILE_CPU_NAMED("Scripting::Draw");
|
PROFILE_CPU_NAMED("Scripting::Draw");
|
||||||
|
|||||||
@@ -80,17 +80,22 @@ namespace FlaxEngine
|
|||||||
public static event Action Update;
|
public static event Action Update;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Occurs on scripting 'late' update.
|
/// Occurs on scripting late update.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static event Action LateUpdate;
|
public static event Action LateUpdate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Occurs on scripting `fixed` update.
|
/// Occurs on scripting fixed update.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static event Action FixedUpdate;
|
public static event Action FixedUpdate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Occurs on scripting `draw` update. Called during frame rendering and can be used to invoke custom rendering with GPUDevice.
|
/// Occurs on scripting late fixed update.
|
||||||
|
/// </summary>
|
||||||
|
public static event Action LateFixedUpdate;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Occurs on scripting draw update. Called during frame rendering and can be used to invoke custom rendering with GPUDevice.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static event Action Draw;
|
public static event Action Draw;
|
||||||
|
|
||||||
@@ -302,6 +307,11 @@ namespace FlaxEngine
|
|||||||
FixedUpdate?.Invoke();
|
FixedUpdate?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static void Internal_LateFixedUpdate()
|
||||||
|
{
|
||||||
|
LateFixedUpdate?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
internal static void Internal_Draw()
|
internal static void Internal_Draw()
|
||||||
{
|
{
|
||||||
Draw?.Invoke();
|
Draw?.Invoke();
|
||||||
|
|||||||
Reference in New Issue
Block a user