From 6ad1cd7aa82463cd0a8b5560061f4ae4988eb7c8 Mon Sep 17 00:00:00 2001 From: lukeIam <2lukeiam@gmail.com> Date: Mon, 27 Aug 2018 20:04:20 +0200 Subject: [PATCH] Just playing around with yoga and unity to see if we could build a ui with it --- .gitignore | 42 +- Dummy/App.config | 6 + Dummy/Program.cs | 16 + Dummy/Properties/AssemblyInfo.cs | 36 + Vocaluxe.UI.Unity/Assets/Facebook.Yoga.dll | Bin 0 -> 29184 bytes .../Assets/Facebook.Yoga.dll.config.meta | 97 +++ .../Assets/Facebook.Yoga.dll.meta | 96 +++ Vocaluxe.UI.Unity/Assets/Scenes.meta | 8 + Vocaluxe.UI.Unity/Assets/Scenes/Main.unity | 359 ++++++++++ .../Assets/Scenes/Main.unity.meta | 7 + Vocaluxe.UI.Unity/Assets/ScreenHandler.cs | 128 ++++ .../Assets/ScreenHandler.cs.meta | 11 + Vocaluxe.UI.Unity/Assets/Vocaluxe.UI.dll | Bin 0 -> 19456 bytes Vocaluxe.UI.Unity/Assets/Vocaluxe.UI.dll.mdb | Bin 0 -> 5164 bytes .../Assets/Vocaluxe.UI.dll.mdb.meta | 7 + Vocaluxe.UI.Unity/Assets/Vocaluxe.UI.dll.meta | 96 +++ Vocaluxe.UI.Unity/Assets/yoga.dll | Bin 0 -> 69120 bytes Vocaluxe.UI.Unity/Assets/yoga.dll.meta | 96 +++ Vocaluxe.UI.Unity/Packages/manifest.json | 39 ++ .../ProjectSettings/AudioManager.asset | 17 + .../ProjectSettings/ClusterInputManager.asset | 6 + .../ProjectSettings/DynamicsManager.asset | 29 + .../ProjectSettings/EditorBuildSettings.asset | 11 + .../ProjectSettings/EditorSettings.asset | 21 + .../ProjectSettings/GraphicsSettings.asset | 57 ++ .../ProjectSettings/InputManager.asset | 295 +++++++++ .../ProjectSettings/NavMeshAreas.asset | 91 +++ .../ProjectSettings/NetworkManager.asset | 8 + .../ProjectSettings/Physics2DSettings.asset | 55 ++ .../ProjectSettings/PresetManager.asset | 13 + .../ProjectSettings/ProjectSettings.asset | 625 ++++++++++++++++++ .../ProjectSettings/ProjectVersion.txt | 1 + .../ProjectSettings/QualitySettings.asset | 191 ++++++ .../ProjectSettings/TagManager.asset | 43 ++ .../ProjectSettings/TimeManager.asset | 9 + .../UnityConnectSettings.asset | 34 + .../UIElementsSchema/UIElements.xsd | 6 + .../UnityEditor.Experimental.UIElements.xsd | 228 +++++++ .../UnityEditor.PackageManager.UI.xsd | 116 ++++ .../UnityEngine.Experimental.UIElements.xsd | 269 ++++++++ Vocaluxe.UI/AbstractElements/CController.cs | 7 + Vocaluxe.UI/AbstractElements/CUiElement.cs | 156 +++++ Vocaluxe.UI/AbstractElements/CUiScreen.cs | 18 + .../Button/CControllerElementButton.cs | 40 ++ .../BasicElements/Button/CUiElementButton.cs | 16 + .../Button/EElementButtonComponents.cs | 9 + .../Text/CControllerElementText.cs | 15 + .../BasicElements/Text/CUiElementText.cs | 16 + Vocaluxe.UI/CUiElementFactory.cs | 30 + Vocaluxe.UI/DummyClass.cs | 10 + Vocaluxe.UI/Parser/CUiScreenParser.cs | 88 +++ Vocaluxe.UI/Parser/CUiScreenStore.cs | 45 ++ Vocaluxe.UI/Properties/AssemblyInfo.cs | 36 + Vocaluxe.UI/Screens/EUiScreenType.cs | 10 + .../ScreenMain/CControllerScreenMain.cs | 55 ++ .../Screens/ScreenMain/CUiScreenMain.cs | 18 + .../ScreenMain/EScreenMainComponents.cs | 13 + Vocaluxe.UI/UiConnector.cs | 54 ++ Vocaluxe.UI/packages.config | 4 + Vocaluxe.sln | 124 +++- 60 files changed, 3930 insertions(+), 3 deletions(-) create mode 100644 Dummy/App.config create mode 100644 Dummy/Program.cs create mode 100644 Dummy/Properties/AssemblyInfo.cs create mode 100644 Vocaluxe.UI.Unity/Assets/Facebook.Yoga.dll create mode 100644 Vocaluxe.UI.Unity/Assets/Facebook.Yoga.dll.config.meta create mode 100644 Vocaluxe.UI.Unity/Assets/Facebook.Yoga.dll.meta create mode 100644 Vocaluxe.UI.Unity/Assets/Scenes.meta create mode 100644 Vocaluxe.UI.Unity/Assets/Scenes/Main.unity create mode 100644 Vocaluxe.UI.Unity/Assets/Scenes/Main.unity.meta create mode 100644 Vocaluxe.UI.Unity/Assets/ScreenHandler.cs create mode 100644 Vocaluxe.UI.Unity/Assets/ScreenHandler.cs.meta create mode 100644 Vocaluxe.UI.Unity/Assets/Vocaluxe.UI.dll create mode 100644 Vocaluxe.UI.Unity/Assets/Vocaluxe.UI.dll.mdb create mode 100644 Vocaluxe.UI.Unity/Assets/Vocaluxe.UI.dll.mdb.meta create mode 100644 Vocaluxe.UI.Unity/Assets/Vocaluxe.UI.dll.meta create mode 100644 Vocaluxe.UI.Unity/Assets/yoga.dll create mode 100644 Vocaluxe.UI.Unity/Assets/yoga.dll.meta create mode 100644 Vocaluxe.UI.Unity/Packages/manifest.json create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/AudioManager.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/ClusterInputManager.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/DynamicsManager.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/EditorBuildSettings.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/EditorSettings.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/GraphicsSettings.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/InputManager.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/NavMeshAreas.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/NetworkManager.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/Physics2DSettings.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/PresetManager.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/ProjectSettings.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/ProjectVersion.txt create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/QualitySettings.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/TagManager.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/TimeManager.asset create mode 100644 Vocaluxe.UI.Unity/ProjectSettings/UnityConnectSettings.asset create mode 100644 Vocaluxe.UI.Unity/UIElementsSchema/UIElements.xsd create mode 100644 Vocaluxe.UI.Unity/UIElementsSchema/UnityEditor.Experimental.UIElements.xsd create mode 100644 Vocaluxe.UI.Unity/UIElementsSchema/UnityEditor.PackageManager.UI.xsd create mode 100644 Vocaluxe.UI.Unity/UIElementsSchema/UnityEngine.Experimental.UIElements.xsd create mode 100644 Vocaluxe.UI/AbstractElements/CController.cs create mode 100644 Vocaluxe.UI/AbstractElements/CUiElement.cs create mode 100644 Vocaluxe.UI/AbstractElements/CUiScreen.cs create mode 100644 Vocaluxe.UI/BasicElements/Button/CControllerElementButton.cs create mode 100644 Vocaluxe.UI/BasicElements/Button/CUiElementButton.cs create mode 100644 Vocaluxe.UI/BasicElements/Button/EElementButtonComponents.cs create mode 100644 Vocaluxe.UI/BasicElements/Text/CControllerElementText.cs create mode 100644 Vocaluxe.UI/BasicElements/Text/CUiElementText.cs create mode 100644 Vocaluxe.UI/CUiElementFactory.cs create mode 100644 Vocaluxe.UI/DummyClass.cs create mode 100644 Vocaluxe.UI/Parser/CUiScreenParser.cs create mode 100644 Vocaluxe.UI/Parser/CUiScreenStore.cs create mode 100644 Vocaluxe.UI/Properties/AssemblyInfo.cs create mode 100644 Vocaluxe.UI/Screens/EUiScreenType.cs create mode 100644 Vocaluxe.UI/Screens/ScreenMain/CControllerScreenMain.cs create mode 100644 Vocaluxe.UI/Screens/ScreenMain/CUiScreenMain.cs create mode 100644 Vocaluxe.UI/Screens/ScreenMain/EScreenMainComponents.cs create mode 100644 Vocaluxe.UI/UiConnector.cs create mode 100644 Vocaluxe.UI/packages.config diff --git a/.gitignore b/.gitignore index 1a7595d0..582cd06c 100644 --- a/.gitignore +++ b/.gitignore @@ -72,4 +72,44 @@ tx.exe /PitchTracker/bin /PitchTracker/obj /Logs -/Tests/bin \ No newline at end of file +/Tests/bin + +# Unity +[Ll]ibrary/ +[Tt]emp/ +[Oo]bj/ +[Bb]uild/ +[Bb]uilds/ +Assets/AssetStoreTools* + +# Visual Studio cache directory +.vs/ + +# Autogenerated VS/MD/Consulo solution and project files +ExportedObj/ +.consulo/ +*.csproj +*.unityproj +*.sln +*.suo +*.tmp +*.user +*.userprefs +*.pidb +*.booproj +*.svd +*.pdb +*.opendb + +# Unity3D generated meta files +*.pidb.meta +*.pdb.meta + +# Unity3D Generated File On Crash Reports +sysinfo.txt + +# Builds +*.apk +*.unitypackage +/Dummy/bin +/Vocaluxe.UI/bin diff --git a/Dummy/App.config b/Dummy/App.config new file mode 100644 index 00000000..787dcbec --- /dev/null +++ b/Dummy/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Dummy/Program.cs b/Dummy/Program.cs new file mode 100644 index 00000000..240c56fc --- /dev/null +++ b/Dummy/Program.cs @@ -0,0 +1,16 @@ +using System; +using Vocaluxe.UI.Parser; +using Vocaluxe.UI.Screens; + +namespace Dummy +{ + class Program + { + static void Main(string[] args) + { + var store = new CUiScreenStore(); + store.LoadScreens(@"D:\ProfileFolders\Desktop\Screens", (800,600)); + Console.ReadKey(); + } + } +} diff --git a/Dummy/Properties/AssemblyInfo.cs b/Dummy/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..bdcdf6bd --- /dev/null +++ b/Dummy/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Dummy")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Dummy")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("d6525cad-a4c9-420d-adda-2c83a86fd450")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Vocaluxe.UI.Unity/Assets/Facebook.Yoga.dll b/Vocaluxe.UI.Unity/Assets/Facebook.Yoga.dll new file mode 100644 index 0000000000000000000000000000000000000000..2d4813a06185a7abefd5bf994b2f89168682851f GIT binary patch literal 29184 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 _screens = new Dictionary(); + private EUiScreenType _currentScreen = EUiScreenType.None; + + // Use this for initialization + void Start () + { + useGUILayout = false; + RectTransform rt = (RectTransform)transform; + _connector = new CUiConnector(Convert.ToInt32(rt.rect.width), Convert.ToInt32(rt.rect.height)); + foreach (var screenInfo in _connector.GetAllScreens()) + { + _CreateScreen(screenInfo); + } + } + + // Update is called once per frame + void Update () + { + if (_currentScreen == DummyClass.CurrentScreen) + return; + + ChangeScreen(_currentScreen, DummyClass.CurrentScreen); + } + + private void ChangeScreen(EUiScreenType currentScreen, EUiScreenType targetScreen) + { + DeactivateScreen(currentScreen); + ActivateScreen(targetScreen); + } + + private void ActivateScreen(EUiScreenType screen) + { + if(screen == EUiScreenType.None) + return; + _screens[screen].SetActive(true); + } + + private void DeactivateScreen(EUiScreenType screen) + { + if (screen == EUiScreenType.None) + return; + _screens[screen].SetActive(false); + _currentScreen = DummyClass.CurrentScreen; + } + + private void _CreateScreen(KeyValuePair screenNameAndInfo) + { + GameObject newScreen = CreateElement(screenNameAndInfo.Value, screenNameAndInfo.Key.ToString()); + _screens.Add(screenNameAndInfo.Key, newScreen); + newScreen.GetComponent().SetParent(this.transform); + newScreen.SetActive(false); + } + + private GameObject CreateElement(CUiScreen screenInfo, string screenName = "") + { + return CreateElementBase(screenInfo, screenName); + } + + private GameObject CreateElement(CUiElementButton buttonInfo) + { + var button = CreateElementBase(buttonInfo); + button.AddComponent