Add **UI navigation** system

#574
This commit is contained in:
Wojciech Figat
2021-12-21 18:12:54 +01:00
parent 71212420f6
commit c178afdf6b
22 changed files with 918 additions and 54 deletions

View File

@@ -3,15 +3,18 @@
#pragma once
#include "Engine/Level/Actor.h"
#include "Engine/Scripting/ScriptingObjectReference.h"
/// <summary>
/// Contains a single GUI control (on C# side).
/// </summary>
API_CLASS(Sealed) class FLAXENGINE_API UIControl : public Actor
{
DECLARE_SCENE_OBJECT(UIControl);
public:
DECLARE_SCENE_OBJECT(UIControl);
private:
ScriptingObjectReference<UIControl> _navTargetUp, _navTargetDown, _navTargetLeft, _navTargetRight;
public:
// [Actor]
#if USE_EDITOR
BoundingBox GetEditorBox() const override;
@@ -20,7 +23,6 @@ public:
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
protected:
// [Actor]
void OnParentChanged() override;
void OnTransformChanged() override;
@@ -28,4 +30,11 @@ protected:
void OnEndPlay() override;
void OnOrderInParentChanged() override;
void OnActiveInTreeChanged() override;
private:
#if !COMPILE_WITHOUT_CSHARP
// Internal bindings
API_FUNCTION(NoProxy) void GetNavTargets(API_PARAM(Out) UIControl*& up, API_PARAM(Out) UIControl*& down, API_PARAM(Out) UIControl*& left, API_PARAM(Out) UIControl*& right) const;
API_FUNCTION(NoProxy) void SetNavTargets(UIControl* up, UIControl* down, UIControl* left, UIControl* right);
#endif
};