From 5ea20a3d6a925316f33cc8e9b51cfb631cac2104 Mon Sep 17 00:00:00 2001
From: s402520 <sven.gerlach@stud-mail.uni-wuerzburg.de>
Date: Mon, 8 May 2023 09:53:46 +0200
Subject: [PATCH] WorldSpaceUI Fixed (& Prefabs)

---
 .../ScreenSpaceDialogueBox.prefab             | 128 ++++++++
 .../ScreenSpaceDialogueBox.prefab.meta        |   7 +
 .../DialogSystem/WorldSpaceArticyStoryline.cs |  51 +++
 .../WorldSpaceArticyStoryline.cs.meta         |  11 +
 Assets/DialogSystem/WorldSpaceDialogueBox.cs  |  48 ++-
 .../DialogSystem/WorldSpaceDialogueBox.prefab | 155 +++++++++
 .../WorldSpaceDialogueBox.prefab.meta         |   7 +
 Assets/DialogSystem/WorldSpaceUIDocument.cs   |  50 +--
 Assets/Scenes/ArticyTestScene.unity           | 296 +++++++-----------
 9 files changed, 547 insertions(+), 206 deletions(-)
 create mode 100644 Assets/DialogSystem/ScreenSpaceDialogueBox.prefab
 create mode 100644 Assets/DialogSystem/ScreenSpaceDialogueBox.prefab.meta
 create mode 100644 Assets/DialogSystem/WorldSpaceArticyStoryline.cs
 create mode 100644 Assets/DialogSystem/WorldSpaceArticyStoryline.cs.meta
 create mode 100644 Assets/DialogSystem/WorldSpaceDialogueBox.prefab
 create mode 100644 Assets/DialogSystem/WorldSpaceDialogueBox.prefab.meta

diff --git a/Assets/DialogSystem/ScreenSpaceDialogueBox.prefab b/Assets/DialogSystem/ScreenSpaceDialogueBox.prefab
new file mode 100644
index 0000000..5a111dc
--- /dev/null
+++ b/Assets/DialogSystem/ScreenSpaceDialogueBox.prefab
@@ -0,0 +1,128 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &3116787516878310592
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1215535168859495125}
+  - component: {fileID: 2040891770426260038}
+  - component: {fileID: 7704825048354520565}
+  - component: {fileID: 3948177991626159650}
+  - component: {fileID: 1028974936128728872}
+  - component: {fileID: 5577005612343999462}
+  m_Layer: 5
+  m_Name: ScreenSpaceDialogueBox
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1215535168859495125
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3116787516878310592}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &2040891770426260038
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3116787516878310592}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_PanelSettings: {fileID: 11400000, guid: fd07337020fac9f4d817f2d168694173, type: 2}
+  m_ParentUI: {fileID: 0}
+  sourceAsset: {fileID: 0}
+  m_SortingOrder: 0
+--- !u!114 &7704825048354520565
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3116787516878310592}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0b06390bd25b8824eb83c9de4937a410, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  visualTree: {fileID: 9197481963319205126, guid: 603e8ecda2bc66148be7bc0929e2f25b, type: 3}
+  styleSheet: {fileID: 7433441132597879392, guid: 78ec576a11766354b9c6c1e555acf5e4, type: 3}
+  defaultButtonText: Continue
+--- !u!114 &3948177991626159650
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3116787516878310592}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 149237616, guid: df2ec02f61e861546b9427c26ccacb8d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  useDefaultGlobalVariables: 1
+  globalVariables: {fileID: 0}
+  overwriteMethodProvider: 0
+  overwrittenMethodProvider: {fileID: 0}
+  startOn:
+    instanceId: 0
+    referencingMode: 0
+    lowId: 0
+    highId: 0
+  pauseOn: 7
+  ignoreInvalidBranches: 1
+  continuouslyRecalculateBranches: 0
+  continouslyRecalculateInterval: 1
+--- !u!114 &1028974936128728872
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3116787516878310592}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d52eb85494921dd48be8d847a8298602, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &5577005612343999462
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3116787516878310592}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 04f433ebeda01b14092e4f7f84512a40, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  aPress:
+    instanceId: 0
+    referencingMode: 0
+    lowId: 147
+    highId: 16777216
+  bPress:
+    instanceId: 0
+    referencingMode: 0
+    lowId: 43
+    highId: 16777216
diff --git a/Assets/DialogSystem/ScreenSpaceDialogueBox.prefab.meta b/Assets/DialogSystem/ScreenSpaceDialogueBox.prefab.meta
new file mode 100644
index 0000000..a339dc0
--- /dev/null
+++ b/Assets/DialogSystem/ScreenSpaceDialogueBox.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 283a87519024a9544b7bb2a225211046
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/DialogSystem/WorldSpaceArticyStoryline.cs b/Assets/DialogSystem/WorldSpaceArticyStoryline.cs
new file mode 100644
index 0000000..a0cdd86
--- /dev/null
+++ b/Assets/DialogSystem/WorldSpaceArticyStoryline.cs
@@ -0,0 +1,51 @@
+using Articy.Unity;
+using Articy.Unity.Interfaces;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class WorldSpaceArticyStoryline : MonoBehaviour, IArticyFlowPlayerCallbacks {
+    public IList<Branch> currentBranches;
+    
+    //previously ApplyTransition
+    //is called at every "Pause" of the Flow Player (Pause = Dialogue Nodes,...)
+    public void OnFlowPlayerPaused(IFlowObject currentNode) {
+        var dialogueBox = GetComponent<WorldSpaceDialogueBox>();
+
+        if (currentNode != null) {
+            var objWithText = currentNode as IObjectWithText;
+            if (objWithText != null) {
+                dialogueBox.SetText(objWithText.Text);
+            }
+
+            var objSpeaker = currentNode as IObjectWithSpeaker;
+            if (objSpeaker != null) {
+                var speakerDisplayName = objSpeaker.Speaker as IObjectWithDisplayName;
+                if (speakerDisplayName != null) {
+                    dialogueBox.SetActor(speakerDisplayName.DisplayName);
+                }
+                else {
+                    dialogueBox.SetActor(string.Empty);
+                }
+            }
+            else {
+                dialogueBox.SetActor(string.Empty);
+            }
+        }
+        else {
+            dialogueBox.ClearUI();
+        }
+    }
+
+    //is called with every new Dialogue Node and returns its branches
+    public void OnBranchesUpdated(IList<Branch> branches) {
+        currentBranches = branches;
+        GetComponent<WorldSpaceDialogueBox>().SetTransitions(currentBranches);
+    }
+
+    //used by the Buttons in the DialogueBox script
+    public void ApplyTransition(int count) {
+        GetComponent<WorldSpaceDialogueBox>().ClearUI();
+        GetComponent<ArticyFlowPlayer>().Play(currentBranches[count]);
+    }
+}
\ No newline at end of file
diff --git a/Assets/DialogSystem/WorldSpaceArticyStoryline.cs.meta b/Assets/DialogSystem/WorldSpaceArticyStoryline.cs.meta
new file mode 100644
index 0000000..55274ef
--- /dev/null
+++ b/Assets/DialogSystem/WorldSpaceArticyStoryline.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2a59cd820c99c234fa950e2b034e9fa0
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/DialogSystem/WorldSpaceDialogueBox.cs b/Assets/DialogSystem/WorldSpaceDialogueBox.cs
index 126e1f8..b3a8e1b 100644
--- a/Assets/DialogSystem/WorldSpaceDialogueBox.cs
+++ b/Assets/DialogSystem/WorldSpaceDialogueBox.cs
@@ -1,13 +1,16 @@
 using UnityEditor;
+using System.Collections.Generic;
+using Articy.Unity;
+using Articy.Unity.Interfaces;
+using Articy.Unity.Utils;
 using UnityEngine;
-using UnityEngine.Events;
+using System.Collections;
+using UnityEngine.EventSystems;
 using UnityEngine.UIElements;
 
 
 public class WorldSpaceDialogueBox : MonoBehaviour {
 
-    //Only the different parts for now
-
     private UIDocument uiDocument;
     [SerializeField] protected VisualTreeAsset visualTree;
     [SerializeField] protected StyleSheet styleSheet;
@@ -15,6 +18,8 @@ public class WorldSpaceDialogueBox : MonoBehaviour {
     private VisualElement root;
     private Button[] buttons;
 
+    public string defaultButtonText = "Continue";
+
 
     public void Awake() {
         worldSpaceUIDocument.onUIDocumentReady.AddListener(setUIDocument);
@@ -27,14 +32,49 @@ private void setUIDocument() {
         tree.styleSheets.Add(styleSheet);
         root.Add(tree);
         buttons = root.Query<Button>().ToList().ToArray();
+        ClearUI();
 
         for (var i = 0; i < buttons.Length; i++) {
             var index = i;
-            buttons[i].RegisterCallback<MouseUpEvent>(_ => GetComponent<ArticyStoryline>().ApplyTransition(index));
+            buttons[i].RegisterCallback<MouseUpEvent>(_ => GetComponent<WorldSpaceArticyStoryline>().ApplyTransition(index));
         }
+    }
+
+    public void ClearUI() {
+        SetActor(string.Empty);
+        SetText(string.Empty);
+        for (var i = 0; i < buttons.Length; i++)
+            buttons[i].visible = false;
+    }
+
+    public void SetActor(string actor) {
+        root.Q<Label>("Actor").text = actor;
+    }
 
+    public void SetText(string text) {
+        root.Q<TextElement>("Dialogue").text = text;
     }
 
+    public void SetTransitions(IList<Branch> branches) {
+        for (var i = 0; i < buttons.Length; i++) {
+            buttons[i].text = string.Empty;
+
+            if (i < branches.Count) {
+                buttons[i].visible = true;
+
+                var menuText = branches[i].Target as IObjectWithMenuText;
+                if (menuText != null && menuText.MenuText != string.Empty) {
+                    buttons[i].text = menuText.MenuText;
+                }
+                else {
+                    buttons[i].text = defaultButtonText;
+                }
+            }
+            else {
+                buttons[i].visible = false;
+            }
+        }
+    }
 }
 
 
diff --git a/Assets/DialogSystem/WorldSpaceDialogueBox.prefab b/Assets/DialogSystem/WorldSpaceDialogueBox.prefab
new file mode 100644
index 0000000..f8e14f7
--- /dev/null
+++ b/Assets/DialogSystem/WorldSpaceDialogueBox.prefab
@@ -0,0 +1,155 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &5313695097596267024
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5313695097596267050}
+  - component: {fileID: 5313695097596267051}
+  - component: {fileID: 5313695097596267028}
+  - component: {fileID: 5313695097596267029}
+  - component: {fileID: 5313695097596267030}
+  - component: {fileID: 5313695097596267049}
+  - component: {fileID: 5313695097596267048}
+  m_Layer: 0
+  m_Name: WorldSpaceDialogueBox
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5313695097596267050
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5313695097596267024}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.17, y: 1.35, z: -9.08}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &5313695097596267051
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5313695097596267024}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fbbce919b93a804449b8e74c7b1eec1b, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  _panelWidth: 1280
+  _panelHeight: 720
+  _panelScale: 1
+  _pixelsPerUnit: 1280
+  _visualTreeAsset: {fileID: 0}
+  _panelSettingsPrefab: {fileID: 11400000, guid: fd07337020fac9f4d817f2d168694173, type: 2}
+  _renderTexturePrefab: {fileID: 8400000, guid: 17662cfbd375e554d91b75bf67594f93, type: 2}
+  UseDragEventFix: 0
+  onUIDocumentReady:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!114 &5313695097596267028
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5313695097596267024}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: f6a8876d339d1ce4dbb83ea0158084f2, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  visualTree: {fileID: 9197481963319205126, guid: 603e8ecda2bc66148be7bc0929e2f25b, type: 3}
+  styleSheet: {fileID: 7433441132597879392, guid: 78ec576a11766354b9c6c1e555acf5e4, type: 3}
+  worldSpaceUIDocument: {fileID: 5313695097596267051}
+  defaultButtonText: Continue
+--- !u!114 &5313695097596267029
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5313695097596267024}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 6df61a9a13528fd4f9365c233cb23bfb, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_RaycastTriggerInteraction: 1
+  m_EventMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_MaxRayIntersections: 10
+  m_EventCamera: {fileID: 0}
+--- !u!114 &5313695097596267030
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5313695097596267024}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 149237616, guid: df2ec02f61e861546b9427c26ccacb8d, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  useDefaultGlobalVariables: 1
+  globalVariables: {fileID: 0}
+  overwriteMethodProvider: 0
+  overwrittenMethodProvider: {fileID: 0}
+  startOn:
+    instanceId: 0
+    referencingMode: 0
+    lowId: 62
+    highId: 16777216
+  pauseOn: 7
+  ignoreInvalidBranches: 1
+  continuouslyRecalculateBranches: 0
+  continouslyRecalculateInterval: 1
+--- !u!114 &5313695097596267049
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5313695097596267024}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 2a59cd820c99c234fa950e2b034e9fa0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &5313695097596267048
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5313695097596267024}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 04f433ebeda01b14092e4f7f84512a40, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  aPress:
+    instanceId: 0
+    referencingMode: 0
+    lowId: 62
+    highId: 16777216
+  bPress:
+    instanceId: 0
+    referencingMode: 0
+    lowId: 43
+    highId: 16777216
diff --git a/Assets/DialogSystem/WorldSpaceDialogueBox.prefab.meta b/Assets/DialogSystem/WorldSpaceDialogueBox.prefab.meta
new file mode 100644
index 0000000..797a6f2
--- /dev/null
+++ b/Assets/DialogSystem/WorldSpaceDialogueBox.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8cfe3f32eae0d304285287fececf058b
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/DialogSystem/WorldSpaceUIDocument.cs b/Assets/DialogSystem/WorldSpaceUIDocument.cs
index 95c2de9..387578a 100644
--- a/Assets/DialogSystem/WorldSpaceUIDocument.cs
+++ b/Assets/DialogSystem/WorldSpaceUIDocument.cs
@@ -27,7 +27,7 @@ public class WorldSpaceUIDocument : MonoBehaviour, IPointerMoveHandler, IPointer
 
         [Tooltip("Some input modules (like the XRUIInputModule from the XR Interaction toolkit package) doesn't send PointerMove events. If you are using such an input module, just set this to true so at least you can properly drag things around.")]
         public bool UseDragEventFix = false;
-        
+
         public Vector2 PanelSize
         {
             get => new Vector2(_panelWidth, _panelHeight);
@@ -68,10 +68,10 @@ public VisualTreeAsset VisualTreeAsset
         public float PixelsPerUnit { get => _pixelsPerUnit; set { _pixelsPerUnit = value; RefreshPanelSize(); } }
         public PanelSettings PanelSettingsPrefab { get => _panelSettingsPrefab; set { _panelSettingsPrefab = value; RebuildPanel(); } }
         public RenderTexture RenderTexturePrefab { get => _renderTexturePrefab; set { _renderTexturePrefab = value; RebuildPanel(); } }
-        
+
         protected MeshRenderer _meshRenderer;
         protected PanelEventHandler _panelEventHandler;
-        
+
         // runtime rebuildable stuff
         protected UIDocument _uiDocument;
         protected PanelSettings _panelSettings;
@@ -80,13 +80,13 @@ public VisualTreeAsset VisualTreeAsset
 
         public UnityEvent onUIDocumentReady;
 
-        void Awake ()
+        void Awake()
         {
             PixelsPerUnit = _pixelsPerUnit;
 
             // dynamically a MeshFilter, MeshRenderer and BoxCollider
             MeshFilter meshFilter = gameObject.AddComponent<MeshFilter>();
-            
+
             _meshRenderer = gameObject.AddComponent<MeshRenderer>();
             _meshRenderer.sharedMaterial = null;
             _meshRenderer.shadowCastingMode = ShadowCastingMode.Off;
@@ -117,7 +117,7 @@ void Start()
         /// will always trigger RebuildPanel(), but if you are calling this after the GameObject started you must call RebuildPanel() so the
         /// changes take effect.
         /// </summary>
-        public void InitPanel (int panelWidth, int panelHeight, float panelScale, float pixelsPerUnit, VisualTreeAsset visualTreeAsset, PanelSettings panelSettingsPrefab, RenderTexture renderTexturePrefab)
+        public void InitPanel(int panelWidth, int panelHeight, float panelScale, float pixelsPerUnit, VisualTreeAsset visualTreeAsset, PanelSettings panelSettingsPrefab, RenderTexture renderTexturePrefab)
         {
             _panelWidth = panelWidth;
             _panelHeight = panelHeight;
@@ -131,7 +131,7 @@ public void InitPanel (int panelWidth, int panelHeight, float panelScale, float
         /// <summary>
         /// Rebuilds the panel by destroy current assets and generating new ones based on the configuration.
         /// </summary>
-        public void RebuildPanel ()
+        public void RebuildPanel()
         {
             DestroyGeneratedAssets();
 
@@ -161,7 +161,7 @@ public void RebuildPanel ()
                 _material = new Material(Shader.Find("Unlit/Transparent"));
             else
                 _material = new Material(Shader.Find("Unlit/Texture"));
-            
+
             _material.SetTexture("_MainTex", _renderTexture);
             _meshRenderer.sharedMaterial = _material;
 
@@ -178,13 +178,13 @@ public void RebuildPanel ()
                     PanelRaycaster panelRaycaster = _panelEventHandler.GetComponent<PanelRaycaster>();
                     if (panelRaycaster != null)
                         panelRaycaster.enabled = false;
-                    
+
                     break;
                 }
             }
         }
 
-        protected void RefreshPanelSize ()
+        protected void RefreshPanelSize()
         {
             if (_renderTexture != null && (_renderTexture.width != _panelWidth || _renderTexture.height != _panelHeight))
             {
@@ -200,7 +200,7 @@ protected void RefreshPanelSize ()
             transform.localScale = new Vector3(_panelWidth / _pixelsPerUnit, _panelHeight / _pixelsPerUnit, 1.0f);
         }
 
-        protected void DestroyGeneratedAssets ()
+        protected void DestroyGeneratedAssets()
         {
             if (_uiDocument) Destroy(_uiDocument);
             if (_renderTexture) Destroy(_renderTexture);
@@ -208,7 +208,7 @@ protected void DestroyGeneratedAssets ()
             if (_material) Destroy(_material);
         }
 
-        void OnDestroy ()
+        void OnDestroy()
         {
             DestroyGeneratedAssets();
         }
@@ -228,70 +228,70 @@ void OnValidate ()
         }
 #endif
 
-///////////////////////// REDIRECTION OF EVENTS TO THE PANEL
+        ///////////////////////// REDIRECTION OF EVENTS TO THE PANEL
         protected readonly HashSet<(BaseEventData, int)> _eventsProcessedInThisFrame = new HashSet<(BaseEventData, int)>();
 
-        void LateUpdate ()
+        void LateUpdate()
         {
             _eventsProcessedInThisFrame.Clear();
         }
 
-        public void OnPointerMove (PointerEventData eventData)
+        public void OnPointerMove(PointerEventData eventData)
         {
             TransformPointerEventForUIToolkit(eventData);
             _panelEventHandler?.OnPointerMove(eventData);
         }
 
-        public void OnPointerDown (PointerEventData eventData)
+        public void OnPointerDown(PointerEventData eventData)
         {
             TransformPointerEventForUIToolkit(eventData);
             _panelEventHandler?.OnPointerDown(eventData);
         }
 
-        public void OnPointerUp (PointerEventData eventData)
+        public void OnPointerUp(PointerEventData eventData)
         {
             TransformPointerEventForUIToolkit(eventData);
             _panelEventHandler?.OnPointerUp(eventData);
         }
 
-        public void OnSubmit (BaseEventData eventData)
+        public void OnSubmit(BaseEventData eventData)
         {
             _panelEventHandler?.OnSubmit(eventData);
         }
 
-        public void OnCancel (BaseEventData eventData)
+        public void OnCancel(BaseEventData eventData)
         {
             _panelEventHandler?.OnCancel(eventData);
         }
 
-        public void OnMove (AxisEventData eventData)
+        public void OnMove(AxisEventData eventData)
         {
             _panelEventHandler?.OnMove(eventData);
         }
 
-        public void OnScroll (PointerEventData eventData)
+        public void OnScroll(PointerEventData eventData)
         {
             TransformPointerEventForUIToolkit(eventData);
             _panelEventHandler?.OnScroll(eventData);
         }
 
-        public void OnSelect (BaseEventData eventData)
+        public void OnSelect(BaseEventData eventData)
         {
             _panelEventHandler?.OnSelect(eventData);
         }
 
-        public void OnDeselect (BaseEventData eventData)
+        public void OnDeselect(BaseEventData eventData)
         {
             _panelEventHandler?.OnDeselect(eventData);
         }
 
-        public void OnDrag (PointerEventData eventData)
+        public void OnDrag(PointerEventData eventData)
         {
             if (UseDragEventFix)
                 OnPointerMove(eventData);
         }
 
-        protected void TransformPointerEventForUIToolkit (PointerEventData eventData)
+        protected void TransformPointerEventForUIToolkit(PointerEventData eventData)
         {
             var eventKey = (eventData, eventData.pointerId);
 
diff --git a/Assets/Scenes/ArticyTestScene.unity b/Assets/Scenes/ArticyTestScene.unity
index a14f354..2da5698 100644
--- a/Assets/Scenes/ArticyTestScene.unity
+++ b/Assets/Scenes/ArticyTestScene.unity
@@ -123,7 +123,7 @@ NavMeshSettings:
     debug:
       m_Flags: 0
   m_NavMeshData: {fileID: 0}
---- !u!1 &1185135616
+--- !u!1 &1256801072
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -131,39 +131,111 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 1185135622}
-  - component: {fileID: 1185135621}
-  - component: {fileID: 1185135620}
-  - component: {fileID: 1185135619}
-  - component: {fileID: 1185135618}
-  - component: {fileID: 1185135617}
-  - component: {fileID: 1185135623}
+  - component: {fileID: 1256801075}
+  - component: {fileID: 1256801074}
+  - component: {fileID: 1256801073}
   m_Layer: 0
-  m_Name: WorldSpaceDialogueBox
-  m_TagString: Untagged
+  m_Name: Main Camera
+  m_TagString: MainCamera
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!114 &1185135617
-MonoBehaviour:
+--- !u!81 &1256801073
+AudioListener:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1185135616}
+  m_GameObject: {fileID: 1256801072}
   m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: d52eb85494921dd48be8d847a8298602, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
---- !u!114 &1185135618
+--- !u!20 &1256801074
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1256801072}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 1
+  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_FocalLength: 50
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 1000
+  field of view: 60
+  orthographic: 0
+  orthographic size: 5
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 3
+  m_HDR: 1
+  m_AllowMSAA: 1
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 1
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &1256801075
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1256801072}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 1, z: -10}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1621041051
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1621041057}
+  - component: {fileID: 1621041056}
+  - component: {fileID: 1621041055}
+  - component: {fileID: 1621041054}
+  - component: {fileID: 1621041053}
+  - component: {fileID: 1621041058}
+  - component: {fileID: 1621041059}
+  m_Layer: 0
+  m_Name: WorldSpaceDialogueBox
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &1621041053
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1185135616}
+  m_GameObject: {fileID: 1621041051}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 149237616, guid: df2ec02f61e861546b9427c26ccacb8d, type: 3}
@@ -182,13 +254,13 @@ MonoBehaviour:
   ignoreInvalidBranches: 1
   continuouslyRecalculateBranches: 0
   continouslyRecalculateInterval: 1
---- !u!114 &1185135619
+--- !u!114 &1621041054
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1185135616}
+  m_GameObject: {fileID: 1621041051}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 6df61a9a13528fd4f9365c233cb23bfb, type: 3}
@@ -199,14 +271,14 @@ MonoBehaviour:
     serializedVersion: 2
     m_Bits: 4294967295
   m_MaxRayIntersections: 10
-  m_EventCamera: {fileID: 1256801074}
---- !u!114 &1185135620
+  m_EventCamera: {fileID: 0}
+--- !u!114 &1621041055
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1185135616}
+  m_GameObject: {fileID: 1621041051}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: f6a8876d339d1ce4dbb83ea0158084f2, type: 3}
@@ -214,15 +286,15 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   visualTree: {fileID: 9197481963319205126, guid: 603e8ecda2bc66148be7bc0929e2f25b, type: 3}
   styleSheet: {fileID: 7433441132597879392, guid: 78ec576a11766354b9c6c1e555acf5e4, type: 3}
-  worldSpaceUIDocument: {fileID: 1185135621}
+  worldSpaceUIDocument: {fileID: 1621041056}
   defaultButtonText: Continue
---- !u!114 &1185135621
+--- !u!114 &1621041056
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1185135616}
+  m_GameObject: {fileID: 1621041051}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: fbbce919b93a804449b8e74c7b1eec1b, type: 3}
@@ -239,28 +311,40 @@ MonoBehaviour:
   onUIDocumentReady:
     m_PersistentCalls:
       m_Calls: []
---- !u!4 &1185135622
+--- !u!4 &1621041057
 Transform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1185135616}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 1.8715975, y: -1.7042671, z: 2.6880367}
+  m_GameObject: {fileID: 1621041051}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.17, y: 1.35, z: -9.08}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 0}
-  m_RootOrder: 3
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1185135623
+--- !u!114 &1621041058
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1621041051}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 2a59cd820c99c234fa950e2b034e9fa0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &1621041059
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1185135616}
+  m_GameObject: {fileID: 1621041051}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 04f433ebeda01b14092e4f7f84512a40, type: 3}
@@ -269,97 +353,13 @@ MonoBehaviour:
   aPress:
     instanceId: 0
     referencingMode: 0
-    lowId: 147
+    lowId: 62
     highId: 16777216
   bPress:
     instanceId: 0
     referencingMode: 0
     lowId: 43
     highId: 16777216
---- !u!1 &1256801072
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 1256801075}
-  - component: {fileID: 1256801074}
-  - component: {fileID: 1256801073}
-  m_Layer: 0
-  m_Name: Main Camera
-  m_TagString: MainCamera
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!81 &1256801073
-AudioListener:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1256801072}
-  m_Enabled: 1
---- !u!20 &1256801074
-Camera:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1256801072}
-  m_Enabled: 1
-  serializedVersion: 2
-  m_ClearFlags: 1
-  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
-  m_projectionMatrixMode: 1
-  m_GateFitMode: 2
-  m_FOVAxisMode: 0
-  m_SensorSize: {x: 36, y: 24}
-  m_LensShift: {x: 0, y: 0}
-  m_FocalLength: 50
-  m_NormalizedViewPortRect:
-    serializedVersion: 2
-    x: 0
-    y: 0
-    width: 1
-    height: 1
-  near clip plane: 0.3
-  far clip plane: 1000
-  field of view: 60
-  orthographic: 0
-  orthographic size: 5
-  m_Depth: -1
-  m_CullingMask:
-    serializedVersion: 2
-    m_Bits: 4294967295
-  m_RenderingPath: -1
-  m_TargetTexture: {fileID: 0}
-  m_TargetDisplay: 0
-  m_TargetEye: 3
-  m_HDR: 1
-  m_AllowMSAA: 1
-  m_AllowDynamicResolution: 0
-  m_ForceIntoRT: 0
-  m_OcclusionCulling: 1
-  m_StereoConvergence: 10
-  m_StereoSeparation: 0.022
---- !u!4 &1256801075
-Transform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1256801072}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 1, z: -10}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 0}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1 &1933320861
 GameObject:
   m_ObjectHideFlags: 0
@@ -475,61 +475,3 @@ MonoBehaviour:
   m_ShadowLayerMask: 1
   m_LightCookieSize: {x: 1, y: 1}
   m_LightCookieOffset: {x: 0, y: 0}
---- !u!1001 &2532200149238856781
-PrefabInstance:
-  m_ObjectHideFlags: 0
-  serializedVersion: 2
-  m_Modification:
-    m_TransformParent: {fileID: 0}
-    m_Modifications:
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_RootOrder
-      value: 2
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalPosition.x
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalPosition.y
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalPosition.z
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalRotation.w
-      value: 1
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalRotation.x
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalRotation.y
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalRotation.z
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalEulerAnglesHint.x
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalEulerAnglesHint.y
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114469, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_LocalEulerAnglesHint.z
-      value: 0
-      objectReference: {fileID: 0}
-    - target: {fileID: 2532200149629114479, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-      propertyPath: m_Name
-      value: ScreenSpaceDialogueBox
-      objectReference: {fileID: 0}
-    m_RemovedComponents:
-    - {fileID: 2532200149629114478, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-  m_SourcePrefab: {fileID: 100100000, guid: 283a87519024a9544b7bb2a225211046, type: 3}
-- 
GitLab