Merge remote-tracking branch 'origin/1.11' into work
Some checks failed
Build Android / Game (Android, Release ARM64) (push) Has been cancelled
Build iOS / Game (iOS, Release ARM64) (push) Has been cancelled
Build Linux / Editor (Linux, Development x64) (push) Has been cancelled
Build Linux / Game (Linux, Release x64) (push) Has been cancelled
Build macOS / Editor (Mac, Development ARM64) (push) Has been cancelled
Build macOS / Game (Mac, Release ARM64) (push) Has been cancelled
Build Windows / Editor (Windows, Development x64) (push) Has been cancelled
Build Windows / Game (Windows, Release x64) (push) Has been cancelled
Cooker / Cook (Mac) (push) Has been cancelled
Tests / Tests (Linux) (push) Has been cancelled
Tests / Tests (Windows) (push) Has been cancelled

This commit is contained in:
2025-07-05 14:19:52 +03:00
286 changed files with 4528 additions and 1308 deletions

View File

@@ -14,6 +14,7 @@
#include "Engine/Scripting/ScriptingType.h"
#include "Engine/Scripting/BinaryModule.h"
#include "Engine/Profiler/ProfilerCPU.h"
#include "Engine/Profiler/ProfilerMemory.h"
#include "Engine/Serialization/JsonTools.h"
struct AxisEvaluation
@@ -90,12 +91,14 @@ Array<AxisConfig> Input::AxisMappings;
void InputSettings::Apply()
{
PROFILE_MEM(Input);
Input::ActionMappings = ActionMappings;
Input::AxisMappings = AxisMappings;
}
void InputSettings::Deserialize(DeserializeStream& stream, ISerializeModifier* modifier)
{
PROFILE_MEM(Input);
const auto actionMappings = stream.FindMember("ActionMappings");
if (actionMappings != stream.MemberEnd())
{
@@ -167,6 +170,7 @@ void Mouse::OnMouseMoved(const Float2& newPosition)
void Mouse::OnMouseDown(const Float2& position, const MouseButton button, Window* target)
{
PROFILE_MEM(Input);
Event& e = _queue.AddOne();
e.Type = EventType::MouseDown;
e.Target = target;
@@ -185,6 +189,7 @@ bool Mouse::IsAnyButtonDown() const
void Mouse::OnMouseUp(const Float2& position, const MouseButton button, Window* target)
{
PROFILE_MEM(Input);
Event& e = _queue.AddOne();
e.Type = EventType::MouseUp;
e.Target = target;
@@ -194,6 +199,7 @@ void Mouse::OnMouseUp(const Float2& position, const MouseButton button, Window*
void Mouse::OnMouseDoubleClick(const Float2& position, const MouseButton button, Window* target)
{
PROFILE_MEM(Input);
Event& e = _queue.AddOne();
e.Type = EventType::MouseDoubleClick;
e.Target = target;
@@ -203,6 +209,7 @@ void Mouse::OnMouseDoubleClick(const Float2& position, const MouseButton button,
void Mouse::OnMouseMove(const Float2& position, Window* target)
{
PROFILE_MEM(Input);
Event& e = _queue.AddOne();
e.Type = EventType::MouseMove;
e.Target = target;
@@ -219,6 +226,7 @@ void Mouse::OnMouseMoveRelative(const Float2& positionRelative, Window* target)
void Mouse::OnMouseLeave(Window* target)
{
PROFILE_MEM(Input);
Event& e = _queue.AddOne();
e.Type = EventType::MouseLeave;
e.Target = target;
@@ -226,6 +234,7 @@ void Mouse::OnMouseLeave(Window* target)
void Mouse::OnMouseWheel(const Float2& position, float delta, Window* target)
{
PROFILE_MEM(Input);
Event& e = _queue.AddOne();
e.Type = EventType::MouseWheel;
e.Target = target;
@@ -327,6 +336,7 @@ void Keyboard::OnCharInput(Char c, Window* target)
if (c < 32)
return;
PROFILE_MEM(Input);
Event& e = _queue.AddOne();
e.Type = EventType::Char;
e.Target = target;
@@ -337,6 +347,7 @@ void Keyboard::OnKeyUp(KeyboardKeys key, Window* target)
{
if (key >= KeyboardKeys::MAX)
return;
PROFILE_MEM(Input);
Event& e = _queue.AddOne();
e.Type = EventType::KeyUp;
e.Target = target;
@@ -347,6 +358,7 @@ void Keyboard::OnKeyDown(KeyboardKeys key, Window* target)
{
if (key >= KeyboardKeys::MAX)
return;
PROFILE_MEM(Input);
Event& e = _queue.AddOne();
e.Type = EventType::KeyDown;
e.Target = target;
@@ -629,6 +641,7 @@ float Input::GetAxisRaw(const StringView& name)
void Input::SetInputMappingFromSettings(const JsonAssetReference<InputSettings>& settings)
{
PROFILE_MEM(Input);
auto actionMappings = settings.GetInstance()->ActionMappings;
ActionMappings.Resize(actionMappings.Count(), false);
for (int i = 0; i < actionMappings.Count(); i++)
@@ -648,6 +661,7 @@ void Input::SetInputMappingFromSettings(const JsonAssetReference<InputSettings>&
void Input::SetInputMappingToDefaultSettings()
{
PROFILE_MEM(Input);
InputSettings* settings = InputSettings::Get();
if (settings)
{
@@ -710,6 +724,7 @@ Array<AxisConfig> Input::GetAllAxisConfigsByName(const StringView& name)
void Input::SetAxisConfigByName(const StringView& name, AxisConfig& config, bool all)
{
PROFILE_MEM(Input);
for (int i = 0; i < AxisMappings.Count(); ++i)
{
auto& mapping = AxisMappings.At(i);
@@ -726,6 +741,7 @@ void Input::SetAxisConfigByName(const StringView& name, AxisConfig& config, bool
void Input::SetAxisConfigByName(const StringView& name, InputAxisType inputType, const KeyboardKeys positiveButton, const KeyboardKeys negativeButton, bool all)
{
PROFILE_MEM(Input);
for (int i = 0; i < AxisMappings.Count(); ++i)
{
auto& mapping = AxisMappings.At(i);
@@ -741,6 +757,7 @@ void Input::SetAxisConfigByName(const StringView& name, InputAxisType inputType,
void Input::SetAxisConfigByName(const StringView& name, InputAxisType inputType, const GamepadButton positiveButton, const GamepadButton negativeButton, InputGamepadIndex gamepadIndex, bool all)
{
PROFILE_MEM(Input);
for (int i = 0; i < AxisMappings.Count(); ++i)
{
auto& mapping = AxisMappings.At(i);
@@ -756,6 +773,7 @@ void Input::SetAxisConfigByName(const StringView& name, InputAxisType inputType,
void Input::SetAxisConfigByName(const StringView& name, InputAxisType inputType, const float gravity, const float deadZone, const float sensitivity, const float scale, const bool snap, bool all)
{
PROFILE_MEM(Input);
for (int i = 0; i < AxisMappings.Count(); ++i)
{
auto& mapping = AxisMappings.At(i);
@@ -774,6 +792,7 @@ void Input::SetAxisConfigByName(const StringView& name, InputAxisType inputType,
void Input::SetActionConfigByName(const StringView& name, const KeyboardKeys key, bool all)
{
PROFILE_MEM(Input);
for (int i = 0; i < ActionMappings.Count(); ++i)
{
auto& mapping = ActionMappings.At(i);
@@ -788,6 +807,7 @@ void Input::SetActionConfigByName(const StringView& name, const KeyboardKeys key
void Input::SetActionConfigByName(const StringView& name, const MouseButton mouseButton, bool all)
{
PROFILE_MEM(Input);
for (int i = 0; i < ActionMappings.Count(); ++i)
{
auto& mapping = ActionMappings.At(i);
@@ -802,6 +822,7 @@ void Input::SetActionConfigByName(const StringView& name, const MouseButton mous
void Input::SetActionConfigByName(const StringView& name, const GamepadButton gamepadButton, InputGamepadIndex gamepadIndex, bool all)
{
PROFILE_MEM(Input);
for (int i = 0; i < ActionMappings.Count(); ++i)
{
auto& mapping = ActionMappings.At(i);
@@ -816,6 +837,7 @@ void Input::SetActionConfigByName(const StringView& name, const GamepadButton ga
void Input::SetActionConfigByName(const StringView& name, ActionConfig& config, bool all)
{
PROFILE_MEM(Input);
for (int i = 0; i < ActionMappings.Count(); ++i)
{
auto& mapping = ActionMappings.At(i);
@@ -833,6 +855,7 @@ void Input::SetActionConfigByName(const StringView& name, ActionConfig& config,
void InputService::Update()
{
PROFILE_CPU();
PROFILE_MEM(Input);
const auto frame = Time::Update.TicksCount;
const auto dt = Time::Update.UnscaledDeltaTime.GetTotalSeconds();
InputEvents.Clear();