diff --git a/LocalPackages/depthkit.avpro/CHANGELOG.md b/LocalPackages/depthkit.avpro/CHANGELOG.md
new file mode 100644
index 0000000..cb4680d
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/CHANGELOG.md
@@ -0,0 +1,18 @@
+## Changelog
+
+### 0.2.1
+* Added work-around for crashing on Quest
+* Update SDK license agreement
+
+### 0.2.0
+* Updated to Unity 2022.3
+* Tested with AVPro Video 2.9.1
+
+### 0.1.3
+* Updated assembly definitions.
+
+### 0.1.2
+* Player name and component name updated.
+
+### 0.1.1
+* Media references are supported by Depthkit clips.
\ No newline at end of file
diff --git a/LocalPackages/depthkit.avpro/CHANGELOG.md.meta b/LocalPackages/depthkit.avpro/CHANGELOG.md.meta
new file mode 100644
index 0000000..4a38e8d
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/CHANGELOG.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a45ad1881a758b641abc18c0bfc596be
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/LocalPackages/depthkit.avpro/LICENSE.md b/LocalPackages/depthkit.avpro/LICENSE.md
new file mode 100644
index 0000000..4dac3aa
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/LICENSE.md
@@ -0,0 +1,138 @@
+SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT
+
+The text of this license (this “License”) may be found at: www.depthkit.tv/license-agreement-v1
+
+Thank you for your interest in using the Simile Inc dba Scatter ("Scatter") Software Development Kit (the "SDK").
+In order to obtain and use the SDK, you must first agree to the terms of this License. If you do not agree to the
+terms of this License, then you may not use the SDK.
+
+SDK LICENSE
+1. Subject to the terms and conditions of this License, Scatter hereby
+grants to you a worldwide, non-exclusive, royalty-free, sublicenseable license to use, reproduce, modify,
+embed and redistribute (subject to restrictions below) the software contained in the SDK, including, but
+not limited to, the samples, headers, documentation and source code. This License is subject to the
+following terms and conditions:
+1.1 This license grants you the non-exclusive license and right to use the SDK to develop
+methods to play back content produced in the software suite known as Depth Kit (such content referred
+to as your “Content”) in the Unity game engine, as well as other features that may be added from time to
+time by Scatter. You may not use the SDK to connect Depth Kit to any software platform or game engine
+other than Unity.
+1.2 For avoidance of doubt, when you use the SDK in or with your Content, you retain all
+rights to your Content, and you have no obligations to share or license your Content (including your
+source and object code) to Scatter or any third parties; provided, however, Scatter retains all rights to the
+SDK and the headers, libraries and APIs of Depth Kit and other tools made available by Scatter, including
+those that may be incorporated into your Content by virtue of your producing it through Depth Kit.
+1.3 You agree not to commit any act intended to (a) interfere with the normal operation of
+Depth Kit or the SDK, (b) provide software to Depth Kit users or developers that would induce breach of
+any Scatter agreements, or (c) provide software to Scatter or Depth Kit users that contains malware,
+viruses, hacks, bots, Trojan horses, or other malicious code.
+1.4 You may not use the SDK for any purpose not expressly permitted by this License. You
+may not:
+
+a. decompile;
+b. reverse engineer;
+c. disassemble; or
+d. attempt to derive the source code of any part of the SDK where source code is
+not directly provided to you, or any other software or firmware provided to you by Scatter in binary
+form (except as and only to the extent any foregoing restriction is prohibited by applicable law).
+
+REDISTRIBUTION
+2. Subject to the terms and conditions of this License, your license to redistribute and sublicense the SDK
+is also expressly made subject to the following conditions:
+2.1 You may sublicense and redistribute the binary or object code form of the SDK in whole
+for no charge or as part of a for-charge piece of Content; provided, however, you may only license,
+sublicense or redistribute the binary or object code of the SDK (and not the SDK’s source code) in its
+entirety. The SDK, including its associated libraries, and your Content that includes any portion of the
+SDK, may only be used with Depth Kit and may not be used, licensed, or sublicensed to interface with
+software that is not authorized and approved by Scatter;
+2.2 You must include with all such redistributed or sublicensed SDK code the following copyright
+notice: “Copyright 2016-2024 Simile Inc dba Scatter. All rights reserved.”;
+2.3 You must give any other recipients of the SDK a copy of this License as such recipients,
+licensees or sublicensees may only use the SDK subject to the terms of this License and such recipient's,
+licensee's or sublicensee's agreement to and acceptance of this License with Scatter; and
+2.4 The SDK includes a “LICENSE” text file (the “License Notice”), and any SDK distribution that
+you distribute must include a copy of this License with the License Notice.
+
+GENERAL PROVISIONS
+3. Additional Materials
+3.1 Scatter may include in this SDK additional content (e.g., samples) for demonstration,
+references or other specific purposes. Such content will be clearly marked in the SDK and is subject to
+any included terms and conditions.
+3.2 Your use of third-party materials included in the SDK, or which the SDK may be dependent
+upon (including without limitation Unity), may be subject to other terms and conditions typically found in
+separate third-party license agreements or "READ ME" files included with such third-party materials. To
+the extent such other terms and conditions conflict with the terms and conditions of this License, the
+former will control with respect to the applicable third-party materials. The terms of licensing the Unity
+game engine can be found here: https://unity3d.com/legal/terms-of-service/software.
+4. THE SDK AND ANY COMPONENT THEREOF ARE PROVIDED “AS IS” AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL Scatter AS THE COPYRIGHT OWNER OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SDK, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. SOME JURISDICTIONS DO NOT PERMIT THE
+EXCLUSION OR LIMITATION OF IMPLIED WARRANTIES, SO YOU MAY HAVE ADDITIONAL
+RIGHTS.
+5. This License does not grant permission to use the trade names, trademarks, service marks, or product
+names of Scatter, including without limitation “Depth Kit,” except as required for reasonable and customary
+use in describing the origin of the SDK, and reproducing the content of the License Notice file. Scatter
+reserves all rights not expressly granted to you under this License. Neither Scatter’s name nor the names
+of Scatter’s contributors, licensors, employees, or contractors, may be used to endorse or promote
+products developed using the SDK without specific prior written permission of Scatter.
+6. You are responsible for ensuring that your use of the SDK and your Content complies with all
+applicable laws (including privacy laws) wherever your Content is made available. You acknowledge and
+agree that you are solely responsible for any health and safety issues arising from your Content.
+7. Your acceptance of the terms and conditions of this License in and of itself and for all of your Content
+may be evidenced by your usage of the SDK or acceptance of this License. As this License is updated for
+future releases of the SDK, you agree to abide by and meet all requirements of future updates of this
+License for those future SDK releases, with acceptance evidenced by usage of the SDK or any element
+thereof and the future updates of this License will apply for your Content that may be developed for or
+with that future SDK or any element thereof (i.e., you cannot sidestep out of the requirements of future
+updates of the License by developing against an older release of the SDK or License). You acknowledge
+that future versions of the SDK may be provided for a fee or otherwise under substantially different terms
+from those provided hereunder.
+8. Scatter reserves the right to terminate this License and all your rights hereunder immediately in the
+event you materially breach this License.
+9. Furthermore, Scatter also reserves the right to cancel or terminate this License for any of the following
+reasons:
+a. Intellectual property infringement by you for your Content that is used with or by
+the SDK;
+b. Content that violates applicable law;
+c. Health and safety issues associated with your Content;
+d. Use of the SDK with a commercial product other than Depth Kit and Unity; and
+e. Failure to provide required notices as set forth above.
+10. You agree to fully indemnify Scatter from any and all losses, costs, damages and expenses (including
+reasonable attorney's fees) arising out of your Content or any breach of this License.
+11. Scatter may discontinue or change functionality of Depth Kit or the SDK at any time, and your
+continued use of Depth Kit or the SDK or use of any modified or additional services in connection
+therewith is conditioned upon your adherence to the terms of this License, as modified by Scatter from
+time to time, as well as any additional license agreements necessitated by additional features.
+12. In the event any provision of this License is determined to be invalid, prohibited or unenforceable by a
+court or other body of competent jurisdiction, this License shall be construed as if such invalid, prohibited
+or unenforceable provision has been more narrowly drawn so as not to be invalid, prohibited or
+unenforceable.
+13. You may not assign any rights or obligations under this License without the advance written consent
+of Scatter, which may be withheld in its sole discretion. Scatter may assign its rights or obligations under
+this License in its sole discretion.
+14. Failure of either party at any time to enforce any of the provisions of this License will not be construed
+as a waiver of such provisions or in any way affect the validity of this License or parts thereof.
+15. Your remedies under this License shall be limited to the right to collect money damages, if any, and
+you hereby waive your right to injunctive or other equitable relief.
+16. You will comply with all applicable export control laws of the United States and any other applicable
+governmental authority, including without limitation, the U.S. Export Administration Regulations. You
+agree that this License and the SDK and accompanying documentation are Scatter's confidential
+information (and is not publicly available), and you will not use it, disclose it or make it available to others
+except in accordance with the terms of this License.
+17. This License shall be governed by the laws of the State of New York, without giving effect to choice of
+law principles. All disputes relating to this License shall be resolved by binding non-appearance-based
+arbitration before a single arbitrator in New York County, New York. The arbitration shall be conducted in
+accordance with the rules and procedures of JAMS then in effect, and the judgment of the arbitrator shall
+be final and capable of entry in any court of competent jurisdiction. You and Scatter agree to submit to the
+personal jurisdiction of the courts located within New York County, New York in connection with any
+entrance of an arbitrator’s judgment or decision or any dispute with respect to the arbitration process or
+procedure or Scatter’s exercise of its equitable rights or remedies.
+
+Effective as of October 7, 2016
diff --git a/LocalPackages/depthkit.avpro/LICENSE.md.meta b/LocalPackages/depthkit.avpro/LICENSE.md.meta
new file mode 100644
index 0000000..6ea7622
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/LICENSE.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0d89158092f3e114f891a5191ce27b87
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/LocalPackages/depthkit.avpro/README.md b/LocalPackages/depthkit.avpro/README.md
new file mode 100644
index 0000000..53909fc
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/README.md
@@ -0,0 +1,2 @@
+# Depthkit AVPro 2.x Video Player
+Copyright 2021 Scatter All Rights reserved.
diff --git a/LocalPackages/depthkit.avpro/README.md.meta b/LocalPackages/depthkit.avpro/README.md.meta
new file mode 100644
index 0000000..8c0cbac
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/README.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f0f0d066ae4548c4e862f61bb1fd6319
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/LocalPackages/depthkit.avpro/Runtime.meta b/LocalPackages/depthkit.avpro/Runtime.meta
new file mode 100644
index 0000000..719bfef
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fcf5e9af809730a408d295b8b1d848db
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/LocalPackages/depthkit.avpro/Runtime/AVProVideoPlayer.cs b/LocalPackages/depthkit.avpro/Runtime/AVProVideoPlayer.cs
new file mode 100644
index 0000000..0e9791e
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/Runtime/AVProVideoPlayer.cs
@@ -0,0 +1,408 @@
+/************************************************************************************
+
+Depthkit Unity SDK License v1
+Copyright 2016-2024 Simile Inc dba Scatter. All Rights reserved.
+
+Licensed under the the Simile Inc dba Scatter ("Scatter")
+Software Development Kit License Agreement (the "License");
+you may not use this SDK except in compliance with the License,
+which is provided at the time of installation or download,
+or which otherwise accompanies this software in either electronic or hard copy form.
+
+You may obtain a copy of the License at http://www.depthkit.tv/license-agreement-v1
+
+Unless required by applicable law or agreed to in writing,
+the SDK distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and limitations under the License.
+
+************************************************************************************/
+
+using UnityEngine;
+using System;
+using System.Collections;
+using System.Reflection;
+using RenderHeads.Media.AVProVideo;
+
+#if !DK_AVPROv1
+
+namespace Depthkit
+{
+ ///
+ /// Implementation of the Depthkit player with an AVProVideo 2.x backend
+ [AddComponentMenu("Depthkit/Players/Depthkit Video Player (AVPro)")]
+ public class AVProVideoPlayer : Depthkit.ClipPlayer
+ {
+ [SerializeField, HideInInspector]
+ ///
+ /// Reference to the AVProVideo Component
+ protected MediaPlayer m_mediaPlayer;
+
+ [HideInInspector]
+ // Note: on AVProVideo 2.9.1 when building to Quest, and possibly all Android devices,
+ // There is a crash when exposing MediaPlayer.TextureProvider.GetTexture() directly.
+ // To work around this, we use a RenderTexture and Graphics.Blit to copy the video
+ // texture, and then return the copy. Whenever AVPro fixes this issue,
+ // we can remove this work around.
+ public bool disableAndroidTextureCopyWorkAround = false;
+
+ protected RenderTexture m_rt = null;
+
+ string m_path;
+ MediaPathType m_pathType;
+
+ public override void CreatePlayer()
+ {
+ m_mediaPlayer = gameObject.GetComponent();
+ if (m_mediaPlayer == null)
+ {
+ // no media component already added to this component, try adding a MediaPlayer component
+ try
+ {
+ m_mediaPlayer = gameObject.AddComponent();
+ }
+ catch (Exception e)
+ {
+ Debug.LogError("AVProVideo not found in project: " + e.ToString());
+ }
+ }
+ }
+
+ public override bool IsPlayerCreated()
+ {
+ return m_mediaPlayer != null;
+ }
+
+ public override bool IsPlayerSetup()
+ {
+ if (!IsPlayerCreated())
+ {
+ return false;
+ }
+ return m_mediaPlayer.MediaPath != null && (m_mediaPlayer.MediaSource == MediaSource.Path ? m_mediaPlayer.MediaPath.Path != "" : m_mediaPlayer.MediaReference != null);
+ }
+
+ ///
+ /// Sets the video from a path. Assumed relative to data folder path.
+ public override void SetVideoPath(string path)
+ {
+ if (!IsPlayerCreated())
+ {
+ return;
+ }
+
+ path = path.Replace("\\", "/");
+ if (path.StartsWith(Application.dataPath))
+ {
+ path = "Assets" + path.Substring(Application.dataPath.Length);
+ }
+
+ m_path = path;
+ m_pathType = MediaPathType.RelativeToProjectFolder;
+ }
+
+ ///
+ /// Get the absolute path to the video.
+ public override string GetVideoPath()
+ {
+ if (!IsPlayerSetup())
+ {
+ return "";
+ }
+ return m_mediaPlayer.MediaPath.GetResolvedFullPath();
+ }
+
+ public override IEnumerator Load()
+ {
+ //start the loading operation
+ m_mediaPlayer.OpenMedia(new MediaPath(m_path, m_pathType), false);
+ events.OnClipLoadingStarted();
+
+ //while the video is loading you can't play it
+ while (!m_mediaPlayer.Control.CanPlay())
+ {
+ videoLoaded = false;
+ yield return null;
+ }
+ videoLoaded = true;
+ events.OnClipLoadingFinished();
+ yield return null;
+ }
+
+ public override void StartVideoLoad()
+ {
+ StartCoroutine(Load());
+ }
+
+ public override IEnumerator LoadAndPlay()
+ {
+ StartVideoLoad();
+ while (!videoLoaded)
+ {
+ yield return null;
+ }
+ Play();
+ yield return null;
+ }
+ public override void Play()
+ {
+ if (videoLoaded || m_mediaPlayer.MediaOpened)
+ {
+ videoLoaded = true;
+ m_mediaPlayer.Control.Play();
+ events.OnClipPlaybackStarted();
+ }
+ }
+ public override void Pause()
+ {
+ m_mediaPlayer.Control.Pause();
+ events.OnClipPlaybackPaused();
+ }
+ public override void Stop()
+ {
+ if (m_mediaPlayer != null && m_mediaPlayer.Control != null)
+ m_mediaPlayer.Control.Stop();
+ events.OnClipPlaybackStopped();
+ }
+
+ public override double GetCurrentTime()
+ {
+ return m_mediaPlayer.Control.GetCurrentTime();
+ }
+
+ public override int GetCurrentFrame()
+ {
+ if (m_mediaPlayer != null && m_mediaPlayer.TextureProducer != null)
+ {
+ return m_mediaPlayer.TextureProducer.GetTextureFrameCount();
+ }
+ return -1;
+ }
+
+ public override double GetDuration()
+ {
+ return m_mediaPlayer.Info.GetDuration();
+ }
+
+ public override Texture GetTexture()
+ {
+ if (m_mediaPlayer != null && m_mediaPlayer.MediaOpened && m_mediaPlayer.TextureProducer != null)
+ {
+ Texture2D tex = m_mediaPlayer.TextureProducer.GetTexture() as Texture2D;
+ if (tex != null)
+ {
+ // Avoid crash on android when directly returning the TextureProducer.GetTexture()
+ if (Application.platform == RuntimePlatform.Android && !disableAndroidTextureCopyWorkAround)
+ {
+ if (m_rt == null ||
+ m_rt.width != tex.width ||
+ m_rt.height != tex.height)
+ {
+ if (m_rt != null)
+ {
+ m_rt.Release();
+ m_rt = null;
+ }
+ m_rt = new RenderTexture(tex.width, tex.height, 0);
+ m_rt.Create();
+ }
+
+ Graphics.Blit(tex, m_rt);
+
+ return m_rt;
+ }
+ else
+ {
+ return tex;
+ }
+ }
+ }
+
+ return null;
+ }
+ public override bool IsTextureFlipped()
+ {
+ if (m_mediaPlayer != null && m_mediaPlayer.TextureProducer != null)
+ {
+ return m_mediaPlayer.TextureProducer.RequiresVerticalFlip();
+ }
+ return false;
+ }
+
+ public override GammaCorrection GammaCorrectDepth()
+ {
+ if (QualitySettings.activeColorSpace == ColorSpace.Linear)
+ {
+ if (m_mediaPlayer.Info != null && !m_mediaPlayer.Info.PlayerSupportsLinearColorSpace())
+ {
+ return GammaCorrection.None;
+ }
+ else
+ {
+ return GammaCorrection.LinearToGammaSpace;
+ }
+ }
+ else // ColorSpace.Gamma
+ {
+ return GammaCorrection.None;
+ }
+ }
+
+ public override GammaCorrection GammaCorrectColor()
+ {
+
+ if (QualitySettings.activeColorSpace == ColorSpace.Linear)
+ {
+ if (m_mediaPlayer.Info != null && !m_mediaPlayer.Info.PlayerSupportsLinearColorSpace())
+ {
+ return GammaCorrection.GammaToLinearSpace;
+ }
+ else
+ {
+ return GammaCorrection.None;
+ }
+ }
+ else // ColorSpace.Gamma
+ {
+ return GammaCorrection.None;
+ }
+ }
+
+ public override bool IsPlaying()
+ {
+ return (!IsPlayerSetup() || !IsPlayerCreated() || m_mediaPlayer.Control == null) ? false : m_mediaPlayer.Control.IsPlaying();
+ }
+
+ public override void RemoveComponents()
+ {
+ if (!Application.isPlaying)
+ {
+ DestroyImmediate(m_mediaPlayer, true);
+ DestroyImmediate(this, true);
+ }
+ else
+ {
+ Destroy(m_mediaPlayer);
+ Destroy(this);
+ }
+ }
+
+ public override void OnMetadataUpdated(Depthkit.Metadata metadata) { /* do nothing */}
+
+ public override string GetPlayerTypeName()
+ {
+ return typeof(Depthkit.AVProVideoPlayer).Name;
+ }
+
+ public new static string GetPlayerPrettyName()
+ {
+ return "Video Player (AVPro)";
+ }
+
+ public RenderHeads.Media.AVProVideo.MediaPlayer GetPlayerBackend()
+ {
+ return m_mediaPlayer;
+ }
+
+ public override void Seek(float toTimeSeconds)
+ {
+ if (m_mediaPlayer == null)
+ {
+ return;
+ }
+
+ if (m_mediaPlayer.Control == null)
+ {
+ var Init = m_mediaPlayer.GetType().GetMethod("Initialise", BindingFlags.NonPublic | BindingFlags.Instance);
+ Init?.Invoke(m_mediaPlayer, null);
+ }
+
+ var control = m_mediaPlayer.Control;
+ if (control == null)
+ {
+ return;
+ }
+
+ if (control.IsPlaying())
+ {
+ control.Pause(); // Pause since we'll just be seeking.
+ }
+
+ float currentTime = (float)control.GetCurrentTime();
+ float directorTime = toTimeSeconds;
+
+ if (!Mathf.Approximately(currentTime, directorTime))
+ {
+ var preSeekFrameCount = m_mediaPlayer.TextureProducer.GetTextureFrameCount();
+
+ float preSeekTime = (float)control.GetCurrentTime();
+
+ control.Seek(directorTime);
+
+ float postSeekTime = (float)control.GetCurrentTime();
+
+ if (!Mathf.Approximately(preSeekTime, postSeekTime))
+ {
+ control.WaitForNextFrame(GetDummyCamera(), preSeekFrameCount);
+ }
+ }
+
+ m_mediaPlayer.Player.Update();
+ }
+
+ static Camera _dummyCamera;
+ private static Camera GetDummyCamera()
+ {
+ if (_dummyCamera == null)
+ {
+ const string goName = "Video Dummy Camera";
+ GameObject go = GameObject.Find(goName);
+ if (go == null)
+ {
+ go = new GameObject(goName);
+ go.hideFlags = HideFlags.HideInHierarchy | HideFlags.DontSave;
+ go.SetActive(false);
+ if (Application.isPlaying)
+ {
+ DontDestroyOnLoad(go);
+ }
+
+ _dummyCamera = go.AddComponent();
+ _dummyCamera.hideFlags = HideFlags.HideInInspector | HideFlags.DontSave;
+ _dummyCamera.cullingMask = 0;
+ _dummyCamera.clearFlags = CameraClearFlags.Nothing;
+ _dummyCamera.enabled = false;
+ }
+ else
+ {
+ _dummyCamera = go.GetComponent();
+ }
+ }
+ return _dummyCamera;
+ }
+ public override uint GetVideoWidth()
+ {
+ return m_mediaPlayer != null && m_mediaPlayer.Info != null ? (uint)m_mediaPlayer.Info.GetVideoWidth() : 0;
+ }
+ public override uint GetVideoHeight()
+ {
+ return m_mediaPlayer != null && m_mediaPlayer.Info != null ? (uint)m_mediaPlayer.Info.GetVideoHeight() : 0;
+ }
+
+ public override bool SupportsPosterFrame()
+ {
+ return true;
+ }
+
+ void OnDisable()
+ {
+ if (m_rt != null)
+ {
+ m_rt.Release();
+ m_rt = null;
+ }
+ }
+ }
+}
+
+#endif
\ No newline at end of file
diff --git a/LocalPackages/depthkit.avpro/Runtime/AVProVideoPlayer.cs.meta b/LocalPackages/depthkit.avpro/Runtime/AVProVideoPlayer.cs.meta
new file mode 100644
index 0000000..f8749d9
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/Runtime/AVProVideoPlayer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f836f7125ecaa7a40b96bbc592961c04
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: 42c51ff9981f3e24b83cd7ad3c56e235, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/LocalPackages/depthkit.avpro/Runtime/Depthkit.AVPro.asmdef b/LocalPackages/depthkit.avpro/Runtime/Depthkit.AVPro.asmdef
new file mode 100644
index 0000000..58abbca
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/Runtime/Depthkit.AVPro.asmdef
@@ -0,0 +1,17 @@
+{
+ "name": "Depthkit.AVPro",
+ "rootNamespace": "",
+ "references": [
+ "GUID:3ca842002c51d0a43b73e45298809a13",
+ "GUID:d757665d4a59fe94bab8bd5391e60e3d"
+ ],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/LocalPackages/depthkit.avpro/Runtime/Depthkit.AVPro.asmdef.meta b/LocalPackages/depthkit.avpro/Runtime/Depthkit.AVPro.asmdef.meta
new file mode 100644
index 0000000..34b94a0
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/Runtime/Depthkit.AVPro.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9399828fa2dee0448ab66bbae2c0eb43
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/LocalPackages/depthkit.avpro/package.json b/LocalPackages/depthkit.avpro/package.json
new file mode 100644
index 0000000..fd38e24
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "nyc.scatter.depthkit.avpro",
+ "version": "0.2.1",
+ "displayName": "Depthkit AVPro Video Player",
+ "description": "Use the Depthkit AVPro Video Player to playback Depthkit captures as combined-per-pixel videos using the AVPro Video Player from RenderHeads.\n\nNote AVPro Video is a dependency of this package, and is sold separately on the Unity Asset Store and supported by RenderHeads.",
+ "unity": "2022.3",
+ "dependencies": {
+ "nyc.scatter.depthkit.core" : "0.14.2"
+ },
+ "samples": [],
+ "keywords": [
+ "Depthkit",
+ "Volumetric",
+ "Scatter"
+ ],
+ "author": {
+ "name": "Scatter",
+ "email": "support@depthkit.tv",
+ "url": "https://www.depthkit.tv"
+ }
+}
\ No newline at end of file
diff --git a/LocalPackages/depthkit.avpro/package.json.meta b/LocalPackages/depthkit.avpro/package.json.meta
new file mode 100644
index 0000000..9706b52
--- /dev/null
+++ b/LocalPackages/depthkit.avpro/package.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 404e38087f0d5504cb3538ae1c4f5dd7
+PackageManifestImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Viagg-io/Assets/Models/Grotto/Grotto_old.fbx b/Viagg-io/Assets/Models/Grotto/Grotto_old.fbx
deleted file mode 100644
index 9be2abf..0000000
Binary files a/Viagg-io/Assets/Models/Grotto/Grotto_old.fbx and /dev/null differ
diff --git a/Viagg-io/Assets/Models/Grotto/Grotto_old.fbx.meta b/Viagg-io/Assets/Models/Grotto/Grotto_old.fbx.meta
deleted file mode 100644
index 9e51500..0000000
--- a/Viagg-io/Assets/Models/Grotto/Grotto_old.fbx.meta
+++ /dev/null
@@ -1,109 +0,0 @@
-fileFormatVersion: 2
-guid: 0ec434b2db3384aefa7f647a018630ba
-ModelImporter:
- serializedVersion: 22200
- internalIDToNameTable: []
- externalObjects: {}
- materials:
- materialImportMode: 2
- materialName: 0
- materialSearch: 1
- materialLocation: 1
- animations:
- legacyGenerateAnimations: 4
- bakeSimulation: 0
- resampleCurves: 1
- optimizeGameObjects: 0
- removeConstantScaleCurves: 0
- motionNodeName:
- rigImportErrors:
- rigImportWarnings:
- animationImportErrors:
- animationImportWarnings:
- animationRetargetingWarnings:
- animationDoRetargetingWarnings: 0
- importAnimatedCustomProperties: 0
- importConstraints: 0
- animationCompression: 1
- animationRotationError: 0.5
- animationPositionError: 0.5
- animationScaleError: 0.5
- animationWrapMode: 0
- extraExposedTransformPaths: []
- extraUserProperties: []
- clipAnimations: []
- isReadable: 0
- meshes:
- lODScreenPercentages: []
- globalScale: 1
- meshCompression: 0
- addColliders: 0
- useSRGBMaterialColor: 1
- sortHierarchyByName: 1
- importPhysicalCameras: 1
- importVisibility: 1
- importBlendShapes: 1
- importCameras: 1
- importLights: 1
- nodeNameCollisionStrategy: 1
- fileIdsGeneration: 2
- swapUVChannels: 0
- generateSecondaryUV: 0
- useFileUnits: 1
- keepQuads: 0
- weldVertices: 1
- bakeAxisConversion: 0
- preserveHierarchy: 0
- skinWeightsMode: 0
- maxBonesPerVertex: 4
- minBoneWeight: 0.001
- optimizeBones: 1
- meshOptimizationFlags: -1
- indexFormat: 0
- secondaryUVAngleDistortion: 8
- secondaryUVAreaDistortion: 15.000001
- secondaryUVHardAngle: 88
- secondaryUVMarginMethod: 1
- secondaryUVMinLightmapResolution: 40
- secondaryUVMinObjectScale: 1
- secondaryUVPackMargin: 4
- useFileScale: 1
- strictVertexDataChecks: 0
- tangentSpace:
- normalSmoothAngle: 60
- normalImportMode: 0
- tangentImportMode: 3
- normalCalculationMode: 4
- legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
- blendShapeNormalImportMode: 1
- normalSmoothingSource: 0
- referencedClips: []
- importAnimation: 1
- humanDescription:
- serializedVersion: 3
- human: []
- skeleton: []
- armTwist: 0.5
- foreArmTwist: 0.5
- upperLegTwist: 0.5
- legTwist: 0.5
- armStretch: 0.05
- legStretch: 0.05
- feetSpacing: 0
- globalScale: 1
- rootMotionBoneName:
- hasTranslationDoF: 0
- hasExtraRoot: 0
- skeletonHasParents: 1
- lastHumanDescriptionAvatarSource: {instanceID: 0}
- autoGenerateAvatarMappingIfUnspecified: 1
- animationType: 2
- humanoidOversampling: 1
- avatarSetup: 0
- addHumanoidExtraRootOnlyWhenUsingAvatar: 1
- importBlendShapeDeformPercent: 1
- remapMaterialsIfMaterialImportModeIsNone: 0
- additionalBone: 0
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024.meta b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe.meta
similarity index 77%
rename from Viagg-io/Assets/Models/Test/Depthkit/Test22072024.meta
rename to Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe.meta
index 83741f1..7a57824 100644
--- a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024.meta
+++ b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 433bbbc5ea1c6494a94b3e58cf9ec9d5
+guid: c49bec61413ab4eb3bef15520de642b8
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.png b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.png
new file mode 100644
index 0000000..a425b97
Binary files /dev/null and b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.png differ
diff --git a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.png.meta b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.png.meta
similarity index 98%
rename from Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.png.meta
rename to Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.png.meta
index 7eaf8ef..46140b4 100644
--- a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.png.meta
+++ b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.png.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 5a2feeb9d6da542879361ad2cc5e5d91
+guid: cd6f87def808f49b3a441810b508f66a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
diff --git a/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.txt b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.txt
new file mode 100644
index 0000000..b637a52
--- /dev/null
+++ b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.txt
@@ -0,0 +1,275 @@
+{
+ "_versionMajor": 0,
+ "_versionMinor": 5,
+ "boundsCenter": {
+ "x": -0.40000003576278687,
+ "y": -1.0,
+ "z": -0.2999999523162842
+ },
+ "boundsSize": {
+ "x": 1.600000023841858,
+ "y": 2.0,
+ "z": 1.5999999046325684
+ },
+ "defaultReconstructionSettings": {
+ "depthBiasAdjustment": 0.0,
+ "edgeMaskBlurAmount": 0.009999999776482582,
+ "edgeMaskSobelMultiplier": 10.0,
+ "surfaceNormalColorBlendPower": 2.000999927520752,
+ "viewDependentColorBlendPower": 0.0010000000474974513
+ },
+ "format": "perpixel",
+ "numAngles": 6,
+ "numColumns": 3,
+ "numRows": 2,
+ "perspectives": [
+ {
+ "clipEpsilon": 0.002312717027962208,
+ "crop": {
+ "w": 0.9564012289047241,
+ "x": 0.13061988353729248,
+ "y": 0.04359881207346916,
+ "z": 0.8693801164627075
+ },
+ "depthFocalLength": {
+ "x": 1500.3175048828125,
+ "y": 1499.0972900390625
+ },
+ "depthImageSize": {
+ "x": 2560.0,
+ "y": 1440.0
+ },
+ "depthPrincipalPoint": {
+ "x": 1275.4683837890625,
+ "y": 718.2286987304688
+ },
+ "extrinsics": {
+ "e00": -0.32180747389793396,
+ "e01": 0.0007329394575208426,
+ "e02": 0.9468048214912415,
+ "e03": 1.619429588317871,
+ "e10": -0.9467655420303345,
+ "e11": 0.008894646540284157,
+ "e12": -0.32180100679397583,
+ "e13": -1.4947996139526367,
+ "e20": -0.008657354861497879,
+ "e21": -0.99996018409729,
+ "e22": -0.002168441889807582,
+ "e23": 0.07123926281929016,
+ "e30": 0.0,
+ "e31": 0.0,
+ "e32": 0.0,
+ "e33": 1.0
+ },
+ "farClip": 3.151407480239868,
+ "nearClip": 0.9894483089447021
+ },
+ {
+ "clipEpsilon": 0.0018278819043189287,
+ "crop": {
+ "w": 1.0,
+ "x": 0.03410596773028374,
+ "y": 0.0,
+ "z": 0.7058027982711792
+ },
+ "depthFocalLength": {
+ "x": 1505.5750732421875,
+ "y": 1504.5609130859375
+ },
+ "depthImageSize": {
+ "x": 2560.0,
+ "y": 1440.0
+ },
+ "depthPrincipalPoint": {
+ "x": 1280.892578125,
+ "y": 728.7554321289063
+ },
+ "extrinsics": {
+ "e00": 0.6473193764686584,
+ "e01": 0.19083306193351746,
+ "e02": -0.7379433512687683,
+ "e03": -1.8117287158966064,
+ "e10": 0.04852348566055298,
+ "e11": 0.9558703899383545,
+ "e12": 0.2897537648677826,
+ "e13": -0.4360555410385132,
+ "e20": 0.7606728076934814,
+ "e21": -0.22337080538272858,
+ "e22": 0.6094935536384583,
+ "e23": 1.3320561647415161,
+ "e30": 0.0,
+ "e31": 0.0,
+ "e32": 0.0,
+ "e33": 1.0
+ },
+ "farClip": 3.5676116943359375,
+ "nearClip": 0.8322051763534546
+ },
+ {
+ "clipEpsilon": 0.0019183270633220673,
+ "crop": {
+ "w": 1.0,
+ "x": 0.0,
+ "y": 0.0,
+ "z": 1.0
+ },
+ "depthFocalLength": {
+ "x": 1498.4473876953125,
+ "y": 1497.11083984375
+ },
+ "depthImageSize": {
+ "x": 2560.0,
+ "y": 1440.0
+ },
+ "depthPrincipalPoint": {
+ "x": 1265.181884765625,
+ "y": 722.2222290039063
+ },
+ "extrinsics": {
+ "e00": 0.07454666495323181,
+ "e01": 0.9283208250999451,
+ "e02": -0.364229679107666,
+ "e03": -1.0427669286727905,
+ "e10": -0.9500028491020203,
+ "e11": -0.04494527727365494,
+ "e12": -0.30898958444595337,
+ "e13": -1.3992159366607666,
+ "e20": -0.30321186780929565,
+ "e21": 0.36905336380004883,
+ "e22": 0.8785568475723267,
+ "e23": 1.3279074430465698,
+ "e30": 0.0,
+ "e31": 0.0,
+ "e32": 0.0,
+ "e33": 1.0
+ },
+ "farClip": 3.0908966064453125,
+ "nearClip": 0.48445895314216614
+ },
+ {
+ "clipEpsilon": 0.00203624926507473,
+ "crop": {
+ "w": 1.0,
+ "x": 0.0,
+ "y": 0.0,
+ "z": 1.0
+ },
+ "depthFocalLength": {
+ "x": 1500.8951416015625,
+ "y": 1500.4202880859375
+ },
+ "depthImageSize": {
+ "x": 2560.0,
+ "y": 1440.0
+ },
+ "depthPrincipalPoint": {
+ "x": 1285.6243896484375,
+ "y": 726.32373046875
+ },
+ "extrinsics": {
+ "e00": -0.17494119703769684,
+ "e01": -0.4072752594947815,
+ "e02": -0.8963941335678101,
+ "e03": -2.031996965408325,
+ "e10": 0.9817010164260864,
+ "e11": -0.002594058169052005,
+ "e12": -0.19041116535663605,
+ "e13": -1.4524781703948975,
+ "e20": 0.07522445917129517,
+ "e21": -0.9133017659187317,
+ "e22": 0.4002763330936432,
+ "e23": 0.14448893070220947,
+ "e30": 0.0,
+ "e31": 0.0,
+ "e32": 0.0,
+ "e33": 1.0
+ },
+ "farClip": 2.95473575592041,
+ "nearClip": 0.49924084544181824
+ },
+ {
+ "clipEpsilon": 0.0019126877887174487,
+ "crop": {
+ "w": 1.0,
+ "x": 0.07671022415161133,
+ "y": 0.0,
+ "z": 0.5977309942245483
+ },
+ "depthFocalLength": {
+ "x": 1496.1097412109375,
+ "y": 1495.4033203125
+ },
+ "depthImageSize": {
+ "x": 2560.0,
+ "y": 1440.0
+ },
+ "depthPrincipalPoint": {
+ "x": 1274.7603759765625,
+ "y": 723.102294921875
+ },
+ "extrinsics": {
+ "e00": 0.7368024587631226,
+ "e01": -0.10684210807085037,
+ "e02": 0.6676127910614014,
+ "e03": 1.5086183547973633,
+ "e10": -0.03835581988096237,
+ "e11": 0.9792395234107971,
+ "e12": 0.19904454052448273,
+ "e13": -0.4446754455566406,
+ "e20": -0.6750192046165466,
+ "e21": -0.17226335406303406,
+ "e22": 0.7174081206321716,
+ "e23": 1.148557186126709,
+ "e30": 0.0,
+ "e31": 0.0,
+ "e32": 0.0,
+ "e33": 1.0
+ },
+ "farClip": 3.731019973754883,
+ "nearClip": 1.116897463798523
+ },
+ {
+ "clipEpsilon": 0.001989133656024933,
+ "crop": {
+ "w": 0.9230896234512329,
+ "x": 0.0,
+ "y": 0.07691039890050888,
+ "z": 1.0
+ },
+ "depthFocalLength": {
+ "x": 1495.0631103515625,
+ "y": 1494.4176025390625
+ },
+ "depthImageSize": {
+ "x": 2560.0,
+ "y": 1440.0
+ },
+ "depthPrincipalPoint": {
+ "x": 1267.37890625,
+ "y": 736.1304321289063
+ },
+ "extrinsics": {
+ "e00": 0.18193583190441132,
+ "e01": -0.9022316336631775,
+ "e02": 0.39099544286727905,
+ "e03": 0.6211448907852173,
+ "e10": 0.9682206511497498,
+ "e11": 0.09497898072004318,
+ "e12": -0.23136073350906372,
+ "e13": -1.3657952547073364,
+ "e20": 0.17160463333129883,
+ "e21": 0.42066267132759094,
+ "e22": 0.8908393383026123,
+ "e23": 1.283046007156372,
+ "e30": 0.0,
+ "e31": 0.0,
+ "e32": 0.0,
+ "e33": 1.0
+ },
+ "farClip": 3.1509616374969482,
+ "nearClip": 0.6373046636581421
+ }
+ ],
+ "textureHeight": 4096,
+ "textureWidth": 4092
+}
diff --git a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.txt.meta b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.txt.meta
similarity index 75%
rename from Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.txt.meta
rename to Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.txt.meta
index ccd5fcb..18c1734 100644
--- a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.txt.meta
+++ b/Viagg-io/Assets/Models/Test/Depthkit/08082024_Grotto_Guiseppe/Grotto_Guiseppe_Abschied_take0108_08_13_06_33_Export_08_08_17_08_00.txt.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: ce2d6d7d394e147518bcf4b8f2e80b93
+guid: 4d549dc5174254a2fb09b62089c972ad
TextScriptImporter:
externalObjects: {}
userData:
diff --git a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.mp4 b/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.mp4
deleted file mode 100644
index c1ff3e4..0000000
Binary files a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.mp4 and /dev/null differ
diff --git a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.mp4.meta b/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.mp4.meta
deleted file mode 100644
index 740fa9f..0000000
--- a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.mp4.meta
+++ /dev/null
@@ -1,18 +0,0 @@
-fileFormatVersion: 2
-guid: 268a239ef80834dcf8c3b27cdf03abf9
-VideoClipImporter:
- externalObjects: {}
- serializedVersion: 2
- frameRange: 0
- startFrame: -1
- endFrame: -1
- colorSpace: 0
- deinterlace: 0
- encodeAlpha: 0
- flipVertical: 0
- flipHorizontal: 0
- importAudio: 1
- targetSettings: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.png b/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.png
deleted file mode 100644
index 476e851..0000000
Binary files a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.png and /dev/null differ
diff --git a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.txt b/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.txt
deleted file mode 100644
index 0166dd5..0000000
--- a/Viagg-io/Assets/Models/Test/Depthkit/Test22072024/ahoi07_19_19_21_17_Export_07_19_19_32_25.txt
+++ /dev/null
@@ -1,275 +0,0 @@
-{
- "_versionMajor": 0,
- "_versionMinor": 5,
- "boundsCenter": {
- "x": 0.0,
- "y": -1.0,
- "z": 0.0
- },
- "boundsSize": {
- "x": 1.0,
- "y": 2.0,
- "z": 1.0
- },
- "defaultReconstructionSettings": {
- "depthBiasAdjustment": 0.0,
- "edgeMaskBlurAmount": 0.009999999776482582,
- "edgeMaskSobelMultiplier": 10.0,
- "surfaceNormalColorBlendPower": 2.0,
- "viewDependentColorBlendPower": 0.0010000000474974513
- },
- "format": "perpixel",
- "numAngles": 6,
- "numColumns": 3,
- "numRows": 2,
- "perspectives": [
- {
- "clipEpsilon": 0.0036257191095501184,
- "crop": {
- "w": 0.9583691358566284,
- "x": 0.0,
- "y": 0.04163086414337158,
- "z": 0.8483789563179016
- },
- "depthFocalLength": {
- "x": 1500.3175048828125,
- "y": 1499.0972900390625
- },
- "depthImageSize": {
- "x": 2560.0,
- "y": 1440.0
- },
- "depthPrincipalPoint": {
- "x": 1275.4683837890625,
- "y": 718.2286987304688
- },
- "extrinsics": {
- "e00": -0.02792988158762455,
- "e01": 0.28931593894958496,
- "e02": -0.9568260908126831,
- "e03": -1.7454001903533936,
- "e10": -0.9881865382194519,
- "e11": 0.13630491495132446,
- "e12": 0.0700598657131195,
- "e13": -1.2200618982315063,
- "e20": 0.1506895273923874,
- "e21": 0.9474794268608093,
- "e22": 0.2820911109447479,
- "e23": 0.472872257232666,
- "e30": 0.0,
- "e31": 0.0,
- "e32": 0.0,
- "e33": 1.0
- },
- "farClip": 2.4775383472442627,
- "nearClip": 1.0985015630722046
- },
- {
- "clipEpsilon": 0.0020958036184310913,
- "crop": {
- "w": 0.9860617518424988,
- "x": 0.0,
- "y": 0.0,
- "z": 0.8655837774276733
- },
- "depthFocalLength": {
- "x": 1505.5750732421875,
- "y": 1504.5609130859375
- },
- "depthImageSize": {
- "x": 2560.0,
- "y": 1440.0
- },
- "depthPrincipalPoint": {
- "x": 1280.892578125,
- "y": 728.7554321289063
- },
- "extrinsics": {
- "e00": 0.9806053638458252,
- "e01": -0.03312395140528679,
- "e02": -0.19317342340946198,
- "e03": 0.012072339653968811,
- "e10": -0.1616521179676056,
- "e11": 0.4206206500530243,
- "e12": -0.8927187919616699,
- "e13": -2.5450408458709717,
- "e20": 0.11082310229539871,
- "e21": 0.9066317081451416,
- "e22": 0.40710827708244324,
- "e23": 0.5815377235412598,
- "e30": 0.0,
- "e31": 0.0,
- "e32": 0.0,
- "e33": 1.0
- },
- "farClip": 2.80656361579895,
- "nearClip": 0.42084410786628723
- },
- {
- "clipEpsilon": 0.002334830118343234,
- "crop": {
- "w": 0.8994048833847046,
- "x": 0.1711658239364624,
- "y": 0.0,
- "z": 0.5544185638427734
- },
- "depthFocalLength": {
- "x": 1498.4473876953125,
- "y": 1497.11083984375
- },
- "depthImageSize": {
- "x": 2560.0,
- "y": 1440.0
- },
- "depthPrincipalPoint": {
- "x": 1265.181884765625,
- "y": 722.2222290039063
- },
- "extrinsics": {
- "e00": 0.9874048829078674,
- "e01": -0.14426489174365997,
- "e02": -0.06495561450719833,
- "e03": -0.09699346125125885,
- "e10": 0.06451490521430969,
- "e11": 0.7420088052749634,
- "e12": -0.6672785878181458,
- "e13": -2.207484006881714,
- "e20": 0.14446251094341278,
- "e21": 0.654683530330658,
- "e22": 0.7419703602790833,
- "e23": 1.717136263847351,
- "e30": 0.0,
- "e31": 0.0,
- "e32": 0.0,
- "e33": 1.0
- },
- "farClip": 3.156834602355957,
- "nearClip": 1.015351414680481
- },
- {
- "clipEpsilon": 0.004574344959110022,
- "crop": {
- "w": 0.6242855787277222,
- "x": 0.14762921631336212,
- "y": 0.3757144510746002,
- "z": 0.8465307354927063
- },
- "depthFocalLength": {
- "x": 1500.8951416015625,
- "y": 1500.4202880859375
- },
- "depthImageSize": {
- "x": 2560.0,
- "y": 1440.0
- },
- "depthPrincipalPoint": {
- "x": 1285.6243896484375,
- "y": 726.32373046875
- },
- "extrinsics": {
- "e00": -0.022001605480909348,
- "e01": -0.048741407692432404,
- "e02": 0.9985690712928772,
- "e03": 1.930398941040039,
- "e10": 0.9994720816612244,
- "e11": 0.022810915485024452,
- "e12": 0.023134930059313774,
- "e13": -1.1329501867294312,
- "e20": -0.023905903100967407,
- "e21": 0.9985508918762207,
- "e22": 0.04821380227804184,
- "e23": -0.26948004961013794,
- "e30": 0.0,
- "e31": 0.0,
- "e32": 0.0,
- "e33": 1.0
- },
- "farClip": 2.458094358444214,
- "nearClip": 1.365041732788086
- },
- {
- "clipEpsilon": 0.002460331190377474,
- "crop": {
- "w": 1.0,
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "depthFocalLength": {
- "x": 1496.1097412109375,
- "y": 1495.4033203125
- },
- "depthImageSize": {
- "x": 2560.0,
- "y": 1440.0
- },
- "depthPrincipalPoint": {
- "x": 1274.7603759765625,
- "y": 723.102294921875
- },
- "extrinsics": {
- "e00": -0.9889599084854126,
- "e01": 0.06957120448350906,
- "e02": 0.13083656132221222,
- "e03": -0.22282758355140686,
- "e10": 0.0578983798623085,
- "e11": -0.6313350200653076,
- "e12": 0.7733458876609802,
- "e13": -0.5165885090827942,
- "e20": 0.13640430569648743,
- "e21": 0.7723832726478577,
- "e22": 0.6203369498252869,
- "e23": 1.2551623582839966,
- "e30": 0.0,
- "e31": 0.0,
- "e32": 0.0,
- "e33": 1.0
- },
- "farClip": 2.2722465991973877,
- "nearClip": 0.23999999463558197
- },
- {
- "clipEpsilon": 0.0031662536785006523,
- "crop": {
- "w": 1.0,
- "x": 0.0,
- "y": 0.0,
- "z": 1.0
- },
- "depthFocalLength": {
- "x": 1495.0631103515625,
- "y": 1494.4176025390625
- },
- "depthImageSize": {
- "x": 2560.0,
- "y": 1440.0
- },
- "depthPrincipalPoint": {
- "x": 1267.37890625,
- "y": 736.1304321289063
- },
- "extrinsics": {
- "e00": 0.08565513789653778,
- "e01": 0.9662866592407227,
- "e02": 0.24280300736427307,
- "e03": 0.10201678425073624,
- "e10": -0.9804809093475342,
- "e11": 0.03846389055252075,
- "e12": 0.1928151249885559,
- "e13": -1.1943856477737427,
- "e20": 0.1769755333662033,
- "e21": -0.2545793056488037,
- "e22": 0.9507202506065369,
- "e23": 1.273671269416809,
- "e30": 0.0,
- "e31": 0.0,
- "e32": 0.0,
- "e33": 1.0
- },
- "farClip": 1.9877712726593018,
- "nearClip": 0.4086180031299591
- }
- ],
- "textureHeight": 4096,
- "textureWidth": 4092
-}
diff --git a/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor.meta b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor.meta
new file mode 100644
index 0000000..c6c7235
--- /dev/null
+++ b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor.meta
@@ -0,0 +1,9 @@
+fileFormatVersion: 2
+guid: 2b771290a9ed1614fbc5a745ef7ba669
+folderAsset: yes
+timeCreated: 1514034907
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Changelog.txt b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Changelog.txt
new file mode 100644
index 0000000..42820f2
--- /dev/null
+++ b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Changelog.txt
@@ -0,0 +1,196 @@
+-----------------------------
+v3.0.5
+
+- Fixed small issue with Safe Area not being updated when the screen resolution changes.
+
+-----------------------------
+v3.0.4
+
+- Fixed small oversight in Resolution.refreshRate is obsolete warning fix.
+
+-----------------------------
+v3.0.3
+
+- Fixed some comments and removed unused using statements.
+- Fixed Resolution.refreshRate is obsolete warning for Unity 2022.2 and newer.
+- Increased minimum version to recommended Unity 2019.4 LTS.
+
+-----------------------------
+v3.0.2
+
+- Renamed GRAPHY_VR to GRAPHY_XR
+- Added GRAPHY_XR to missing places to fix code compilation
+
+-----------------------------
+v3.0.1
+
+- Added GRAPHY_VR scripting define.
+
+-----------------------------
+v3.0.0
+
+- Added beta support for VR!
+- Added support for an offset in all modules.
+- Big refactor and cleanup.
+
+-----------------------------
+v2.1.3
+
+- Added null check for Keyboard.current.
+
+-----------------------------
+v2.1.2
+
+- Fixed NullRef in AudioMonitor if no main camera is in the scene.
+
+-----------------------------
+v2.1.1
+
+- Small hotfix for a index of out bounds error.
+- Simplified Singleton class to allow Graphy to be Destroyed.
+- Deallocating cached strings on Destroy to free up memory.
+
+-----------------------------
+v2.1.0
+
+- Pretty big refactor.
+- Lots of optimization.
+- Removed min/max fps for 1% and 0.1% lows, which is the industry standard now.
+- Improved UI. Added rounded corners and a better default color palette.
+
+-----------------------------
+v2.0.1
+
+- Updated package.json to 2.0.1.
+
+-----------------------------
+v2.0.0
+
+- Now supports UPM (Unity Package Manager).
+- Minimum official supported version is now Unity 2019.3.0. If you want a version that supports 5.4+, go to Github to download it.
+- Lots of minor tweaks, optimizations and bugfixes.
+
+-----------------------------
+v1.6.0
+
+This is the last release that will officially support Unity 5.4+. Next releases will be targeted towards 2019.3+.
+
+- Minor tweaks, optimizations and bugfixes.
+- Added support for VR single pass instanced rendering.
+
+-----------------------------
+v1.5.2
+
+- Removed asmdefs to avoid missing reference issues in new Unity alpha versions.
+- Improvements avgFps calculation, changed list to array (thanks @Kaladrius2trip).
+
+-----------------------------
+v1.5.1
+
+- Hide Graphy in Game view when it's be disabled on startup.
+- Fixed error if no camera is present in the scene.
+- Added SceneManager namespace so to avoid possible conflicts.
+- Added support for asmdefs (thanks @QSFW).
+
+-----------------------------
+v1.5
+
+- Fixed a number alignment in the audio module (thanks @SuperPenguin).
+- Refactored some code to avoid warnings with the new NET framework 4.0.
+- Shader sorting fix for Screen Space - Camera.
+- Fixed a possible Null Reference Error in the debugger (thanks @strawlink).
+- Fixed import settings in 2 textures (thanks @strawlink).
+- Renamed all Action into System.Action to avoid possible namespace conflicts.
+- Fixed the int rounding to prevent 59.99999FPS from turning into 59FPS (thanks @Rockylars).
+
+-----------------------------
+v1.4.3
+
+- Renamed all the classes with the "G_" prefix to avoid namespace issues with external code (thanks @Rockylars).
+- Refactored some code and added explanations and regions in the G_ShaderGraph class.
+- Assigned all the variables in their declaration to avoid a new NET framework warning.
+
+-----------------------------
+v1.4.2
+
+- Added the option to disable hotkeys.
+- Disabled hotkey check when Editor is not focused (thanks @Rockylars).
+- Refatored and cleaned up code (thanks @Rockylars).
+- Fixed a bug where if the app was defocused and focused back, it would reset Graphy's module active values (thanks @Rockylars).
+
+-----------------------------
+v1.4.1
+
+- Introduced plenty of safety checks to avoid some null reference errors.
+- Possibly fixed the graphs bug when the Editor is defocused and focused back.
+- Code cleanup and refactoring.
+
+-----------------------------
+v1.4
+
+- Updated the header comments in all scripts.
+- Added option to toggle active on start up (thanks @DarkMio).
+- Removed a leftover raycast script in the Graphy UI.Canvas (thanks @DarkMio).
+- Updated the shaders to use UnityObjectToClipPos() (thanks @DarkMio).
+- Bug-Fix: NullRef for EditorStyles.boldlabel (thanks @Flavelius)
+
+-----------------------------
+v1.3
+
+- Added a second graph to the Audio module that shows the highest spectrum value.
+- Added option to Toggle Active and Mode, as well as setting a specific Preset from the API.
+- Fixed a bug that occured when Time.timeScale = 0 (thanks @xDavidLeon!).
+
+-----------------------------
+v1.2.2
+
+- Improved the dB calculations, now the values are much more precise.
+
+-----------------------------
+v1.2.1
+
+- Modified the default UI text values to more generic placeholders to increase clarity.
+- Small fixes in the audio module.
+
+-----------------------------
+v1.2
+
+- MASSIVE reduction in garbage generation. From 8-10 KB every 2-3 seconds to just 200-300 bytes. Garbage generation right now is negligible.
+- Some code optimizations.
+
+-----------------------------
+v1.1
+
+- New Feature: Added a modifiable MODE. If set to LIGHT it will reduce some features or maximum values (like graph resolution) but it will improve compatibility with older hardware.
+- Small performance optimizations.
+- Code refactoring.
+- Improved the vetical alpha fade-off effect in the graph to make it more visible for lower values.
+- Updated the "Customize Graphy" scene to account for these new changes.
+
+-----------------------------
+v1.0
+
+- First major update!
+- Removed some leftover raycast targets from the Graphy UI to avoid interfering with users UI.
+- Added a Customization Scene that allows changing all the parameters in runtime to improve the user experience when testing new values.
+- Added a feature to rescale the background overlay of the Advanced Data module to the text with the highest width.
+- Made ALL parameters modifiable from code using the API.
+- Fixed a bug where sometimes the Graphy Manager would fail trying to retrieve the Audio Module.
+- Improved stabilty.
+
+-----------------------------
+v0.6
+
+- Added a feature to choose if you want to apply a background overlay to Graphy, improving readability in cluttered scenes.
+- Optimized the access to Shader parameters when updating them, improving performance.
+
+-----------------------------
+v0.5.1
+
+- Added a feature to choose if you want to keep Graphy alive through scene changes. Careful, if you activate it but Graphy is the child of another object, the root GameObject will also survive scene changes.
+- Fixed a bug where setting Graphy as a child of another object would break the graphs.
+
+-----------------------------
+v0.5
+
+- Initial release!
diff --git a/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Changelog.txt.meta b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Changelog.txt.meta
new file mode 100644
index 0000000..0ff1461
--- /dev/null
+++ b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Changelog.txt.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 425066d07b7c1204887be96c53348ac6
+labels:
+- counter
+- fps
+- graphy
+- tayx
+timeCreated: 1515072754
+licenseType: Store
+TextScriptImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor.meta b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor.meta
new file mode 100644
index 0000000..6de3ace
--- /dev/null
+++ b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 74026f7916b08a343916493b0a1752cc
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyDebuggerEditor.cs b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyDebuggerEditor.cs
new file mode 100644
index 0000000..d6ff106
--- /dev/null
+++ b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyDebuggerEditor.cs
@@ -0,0 +1,578 @@
+/* ---------------------------------------
+ * Author: Martin Pane (martintayx@gmail.com) (@tayx94)
+ * Contributors: https://github.com/Tayx94/graphy/graphs/contributors
+ * Project: Graphy - Ultimate Stats Monitor
+ * Date: 02-Jan-18
+ * Studio: Tayx
+ *
+ * Git repo: https://github.com/Tayx94/graphy
+ *
+ * This project is released under the MIT license.
+ * Attribution is not required, but it is always welcomed!
+ * -------------------------------------*/
+
+using System;
+using UnityEngine;
+using System.Collections.Generic;
+using System.IO;
+using UnityEditor;
+
+namespace Tayx.Graphy
+{
+ [CustomEditor( typeof( GraphyDebugger ) )]
+ internal class GraphyDebuggerEditor : Editor
+ {
+ #region Variables -> Private
+
+ private GraphyDebugger m_target;
+
+ private int m_newDebugPacketListSize = 0;
+
+ private int m_previouslySelectedDebugPacketIndex = 0;
+ private int m_currentlySelectedDebugPacketIndex = 0;
+
+ private int m_selectedDebugPacketCondition = 0;
+
+ #endregion
+
+ #region Methods -> Unity Callbacks
+
+ private void OnEnable()
+ {
+ m_target = (GraphyDebugger) target;
+ }
+
+ #endregion
+
+ #region Methods -> Public Override
+
+ public override void OnInspectorGUI()
+ {
+ if( m_target == null && target == null )
+ {
+ base.OnInspectorGUI();
+
+ return;
+ }
+
+ float defaultLabelWidth = EditorGUIUtility.labelWidth;
+ float defaultFieldWidth = EditorGUIUtility.fieldWidth;
+
+ //===== CONTENT REGION ========================================================================
+
+ GUILayout.Space( 20 );
+
+ #region Section -> Logo
+
+ if( GraphyEditorStyle.DebuggerLogoTexture != null )
+ {
+ GUILayout.Label
+ (
+ image: GraphyEditorStyle.DebuggerLogoTexture,
+ style: new GUIStyle( GUI.skin.GetStyle( "Label" ) )
+ {
+ alignment = TextAnchor.UpperCenter
+ }
+ );
+
+ GUILayout.Space( 10 );
+ }
+ else
+ {
+ EditorGUILayout.LabelField
+ (
+ label: "[ GRAPHY - DEBUGGER ]",
+ style: GraphyEditorStyle.HeaderStyle1
+ );
+ }
+
+ #endregion
+
+ GUILayout.Space( 5 ); //Extra pixels added when the logo is used.
+
+ #region Section -> Settings
+
+ SerializedObject serObj = serializedObject;
+
+ SerializedProperty
+ debugPacketList =
+ serObj.FindProperty( "m_debugPackets" ); // Find the List in our script and create a refrence of it
+
+ //Update our list
+ serObj.Update();
+
+ EditorGUILayout.LabelField( "Current [Debug Packets] list size: " + debugPacketList.arraySize );
+
+ EditorGUIUtility.fieldWidth = 32;
+ EditorGUILayout.BeginHorizontal();
+
+
+ m_newDebugPacketListSize = EditorGUILayout.IntField
+ (
+ label: "Define a new list size",
+ value: m_newDebugPacketListSize
+ );
+
+ if( GUILayout.Button( "Resize List" ) )
+ {
+ if( EditorUtility.DisplayDialog
+ (
+ title:
+ "Resize List",
+ message:
+ "Are you sure you want to resize the entire List?\n\n" +
+ "Current List Size -> " +
+ debugPacketList.arraySize +
+ "\n" +
+ "New List Size -> " +
+ m_newDebugPacketListSize +
+ "\n" +
+ "This will add default entries if the value is greater than the list size, or erase the bottom values until the new size specified.",
+ ok:
+ "Resize",
+ cancel:
+ "Cancel" )
+ )
+ {
+ m_currentlySelectedDebugPacketIndex = 0;
+
+ if( m_newDebugPacketListSize != debugPacketList.arraySize )
+ {
+ while( m_newDebugPacketListSize > debugPacketList.arraySize )
+ {
+ debugPacketList.InsertArrayElementAtIndex( debugPacketList.arraySize );
+ SetDefaultDebugPacketValues( debugPacketList );
+ }
+
+ while( m_newDebugPacketListSize < debugPacketList.arraySize )
+ {
+ debugPacketList.DeleteArrayElementAtIndex( debugPacketList.arraySize - 1 );
+ }
+ }
+ }
+ }
+
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.LabelField( "NOT RECOMMENDED (Only use for first initialization)",
+ EditorStyles.centeredGreyMiniLabel );
+
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+
+ if( debugPacketList.arraySize < 1 )
+ {
+ m_previouslySelectedDebugPacketIndex = 0;
+ m_currentlySelectedDebugPacketIndex = 0;
+ m_selectedDebugPacketCondition = 0;
+
+ serializedObject.ApplyModifiedProperties();
+ return;
+ }
+
+ GraphyEditorStyle.HeaderStyle2.contentOffset = Vector2.down * 3f;
+
+ EditorGUILayout.LabelField( "Selected debug packet:" );
+
+ EditorGUILayout.BeginHorizontal();
+
+ List debugPacketNames = new List();
+ for( int i = 0; i < debugPacketList.arraySize; i++ )
+ {
+ SerializedProperty listItem = debugPacketList.GetArrayElementAtIndex( i );
+ // NOTE: If the Popup detects two equal strings, it just paints 1, that's why I always add the "i"
+ char checkMark = listItem.FindPropertyRelative( "Active" ).boolValue ? '\u2714' : '\u2718';
+ debugPacketNames.Add
+ (
+ (i + 1) +
+ " (" +
+ checkMark +
+ ") " +
+ " - ID: " +
+ listItem.FindPropertyRelative( "Id" ).intValue +
+ " (Conditions: " +
+ listItem.FindPropertyRelative( "DebugConditions" ).arraySize +
+ ")"
+ );
+ }
+
+ m_currentlySelectedDebugPacketIndex =
+ EditorGUILayout.Popup( m_currentlySelectedDebugPacketIndex, debugPacketNames.ToArray() );
+
+ if( m_currentlySelectedDebugPacketIndex != m_previouslySelectedDebugPacketIndex )
+ {
+ m_selectedDebugPacketCondition = 0;
+
+ m_previouslySelectedDebugPacketIndex = m_currentlySelectedDebugPacketIndex;
+ }
+
+ Color defaultGUIColor = GUI.color;
+
+ GUI.color = new Color( 0.7f, 1f, 0.0f, 1f );
+
+ //Or add a new item to the List<> with a button
+
+ if( GUILayout.Button( "Add", GUILayout.Width( 60 ) ) )
+ {
+ debugPacketList.InsertArrayElementAtIndex( debugPacketList.arraySize );
+ SetDefaultDebugPacketValues( debugPacketList );
+ }
+
+ GUI.color = new Color( 1f, 0.7f, 0.0f, 1f );
+
+ //Remove this index from the List
+
+ if( GUILayout.Button( "Remove", GUILayout.Width( 60 ) ) )
+ {
+ debugPacketList.DeleteArrayElementAtIndex( m_currentlySelectedDebugPacketIndex );
+ if( m_currentlySelectedDebugPacketIndex > 0 )
+ {
+ m_currentlySelectedDebugPacketIndex--;
+ }
+
+ if( debugPacketList.arraySize < 1 )
+ {
+ serializedObject.ApplyModifiedProperties();
+ return;
+ }
+ }
+
+ GUI.color = defaultGUIColor;
+
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+
+ //Display our list to the inspector window
+
+ SerializedProperty listItemSelected =
+ debugPacketList.GetArrayElementAtIndex( m_currentlySelectedDebugPacketIndex );
+
+ SerializedProperty Active = listItemSelected.FindPropertyRelative( "Active" );
+ SerializedProperty Id = listItemSelected.FindPropertyRelative( "Id" );
+ SerializedProperty ExecuteOnce = listItemSelected.FindPropertyRelative( "ExecuteOnce" );
+ SerializedProperty InitSleepTime = listItemSelected.FindPropertyRelative( "InitSleepTime" );
+ SerializedProperty ExecuteSleepTime = listItemSelected.FindPropertyRelative( "ExecuteSleepTime" );
+ SerializedProperty ConditionEvaluation = listItemSelected.FindPropertyRelative( "ConditionEvaluation" );
+ SerializedProperty DebugConditions = listItemSelected.FindPropertyRelative( "DebugConditions" );
+ SerializedProperty MessageType = listItemSelected.FindPropertyRelative( "MessageType" );
+ SerializedProperty Message = listItemSelected.FindPropertyRelative( "Message" );
+ SerializedProperty TakeScreenshot = listItemSelected.FindPropertyRelative( "TakeScreenshot" );
+ SerializedProperty ScreenshotFileName = listItemSelected.FindPropertyRelative( "ScreenshotFileName" );
+ SerializedProperty DebugBreak = listItemSelected.FindPropertyRelative( "DebugBreak" );
+ SerializedProperty UnityEvents = listItemSelected.FindPropertyRelative( "UnityEvents" );
+
+ #endregion
+
+ EditorGUILayout.LabelField
+ (
+ label:
+ "[ PACKET ] - ID: " +
+ Id.intValue +
+ " (Conditions: " +
+ DebugConditions.arraySize +
+ ")",
+ style: GraphyEditorStyle.HeaderStyle2
+ );
+
+ EditorGUIUtility.labelWidth = 150;
+ EditorGUIUtility.fieldWidth = 35;
+
+ Active.boolValue = EditorGUILayout.Toggle
+ (
+ new GUIContent
+ (
+ text: "Active",
+ tooltip: "If false, it will not be checked"
+ ),
+ value: Active.boolValue
+ );
+
+ Id.intValue = EditorGUILayout.IntField
+ (
+ new GUIContent
+ (
+ text: "ID",
+ tooltip: "Optional Id. It's used to get or remove DebugPackets in runtime"
+ ),
+ value: Id.intValue
+ );
+
+ ExecuteOnce.boolValue = EditorGUILayout.Toggle
+ (
+ new GUIContent
+ (
+ text: "Execute once",
+ tooltip: "If true, once the actions are executed, this DebugPacket will delete itself"
+ ),
+ value: ExecuteOnce.boolValue
+ );
+
+ InitSleepTime.floatValue = EditorGUILayout.FloatField
+ (
+ new GUIContent
+ (
+ text: "Init sleep time",
+ tooltip:
+ "Time to wait before checking if conditions are met (use this to avoid low fps drops triggering the conditions when loading the game)"
+ ),
+ value: InitSleepTime.floatValue
+ );
+
+ ExecuteSleepTime.floatValue = EditorGUILayout.FloatField
+ (
+ new GUIContent
+ (
+ text: "Sleep time after execute",
+ tooltip:
+ "Time to wait before checking if conditions are met again (once they have already been met and if ExecuteOnce is false)"
+ ),
+ value: ExecuteSleepTime.floatValue
+ );
+
+
+ EditorGUIUtility.labelWidth = defaultLabelWidth;
+ EditorGUIUtility.fieldWidth = defaultFieldWidth;
+
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+
+ EditorGUILayout.LabelField( "[ CONDITIONS ] (" + DebugConditions.arraySize + ")",
+ GraphyEditorStyle.HeaderStyle2 );
+
+ EditorGUILayout.PropertyField
+ (
+ ConditionEvaluation,
+ new GUIContent( "Condition evaluation" )
+ );
+
+ EditorGUILayout.Space();
+
+ if( DebugConditions.arraySize < 1 )
+ {
+ DebugConditions.InsertArrayElementAtIndex( DebugConditions.arraySize );
+ m_selectedDebugPacketCondition = 0;
+ }
+
+ EditorGUILayout.BeginHorizontal();
+
+ List debugPacketConditionNames = new List();
+ for( int i = 0; i < DebugConditions.arraySize; i++ )
+ {
+ SerializedProperty listItem = DebugConditions.GetArrayElementAtIndex( i );
+ // NOTE: If the Popup detects two equal strings, it just paints 1, that's why I always add the "i"
+
+ string conditionName = (i + 1).ToString() + " - ";
+ conditionName +=
+ GetComparerStringFromDebugVariable(
+ (GraphyDebugger.DebugVariable) listItem.FindPropertyRelative( "Variable" ).intValue ) + " ";
+ conditionName +=
+ GetComparerStringFromDebugComparer(
+ (GraphyDebugger.DebugComparer) listItem.FindPropertyRelative( "Comparer" ).intValue ) + " ";
+ conditionName += listItem.FindPropertyRelative( "Value" ).floatValue.ToString();
+
+ debugPacketConditionNames.Add( conditionName );
+ }
+
+ m_selectedDebugPacketCondition =
+ EditorGUILayout.Popup( m_selectedDebugPacketCondition, debugPacketConditionNames.ToArray() );
+
+ GUI.color = new Color( 0.7f, 1f, 0.0f, 1f );
+
+ if( GUILayout.Button( "Add", GUILayout.Width( 60 ) ) )
+ {
+ DebugConditions.InsertArrayElementAtIndex( DebugConditions.arraySize );
+ }
+
+ if( DebugConditions.arraySize > 1 )
+ {
+ GUI.color = new Color( 1f, 0.7f, 0.0f, 1f );
+ }
+ else
+ {
+ GUI.color = new Color( 1f, 0.7f, 0.0f, 0.5f );
+ }
+
+ //Remove this index from the List
+ if( GUILayout.Button( "Remove", GUILayout.Width( 60 ) ) )
+ {
+ if( DebugConditions.arraySize > 1 )
+ {
+ DebugConditions.DeleteArrayElementAtIndex( m_selectedDebugPacketCondition );
+ if( m_selectedDebugPacketCondition > 0 )
+ {
+ m_selectedDebugPacketCondition--;
+ }
+ }
+ }
+
+ GUI.color = defaultGUIColor;
+
+ EditorGUILayout.EndHorizontal();
+
+ SerializedProperty conditionListItemSelected =
+ DebugConditions.GetArrayElementAtIndex( m_selectedDebugPacketCondition );
+
+ SerializedProperty Variable = conditionListItemSelected.FindPropertyRelative( "Variable" );
+ SerializedProperty Comparer = conditionListItemSelected.FindPropertyRelative( "Comparer" );
+ SerializedProperty Value = conditionListItemSelected.FindPropertyRelative( "Value" );
+
+ EditorGUILayout.PropertyField
+ (
+ Variable,
+ new GUIContent( "Variable" )
+ );
+
+ EditorGUILayout.PropertyField
+ (
+ Comparer,
+ new GUIContent( "Comparer" )
+ );
+
+ EditorGUILayout.PropertyField
+ (
+ Value,
+ new GUIContent( "Value" )
+ );
+
+ EditorGUILayout.Space();
+ EditorGUILayout.Space();
+
+ EditorGUILayout.LabelField( "[ ACTIONS ]", GraphyEditorStyle.HeaderStyle2 );
+
+ EditorGUIUtility.labelWidth = 140;
+ EditorGUIUtility.fieldWidth = 35;
+
+ EditorGUILayout.PropertyField
+ (
+ MessageType,
+ new GUIContent( "Message type" )
+ );
+
+ EditorGUILayout.PropertyField( Message );
+
+ TakeScreenshot.boolValue = EditorGUILayout.Toggle
+ (
+ new GUIContent
+ (
+ text: "Take screenshot",
+ tooltip:
+ "If true, it takes a screenshot and stores it. The location where the image is written to can include a directory/folder list. With no directory/folder list the image will be written into the Project folder. On mobile platforms the filename is appended to the persistent data path."
+ ),
+ value: TakeScreenshot.boolValue
+ );
+
+ if( TakeScreenshot.boolValue )
+ {
+ EditorGUILayout.PropertyField
+ (
+ ScreenshotFileName,
+ new GUIContent
+ (
+ text: "Screenshot file name",
+ tooltip:
+ "Avoid this characters: * . \" / \\ [ ] : ; | = , \n\nIt will have the date appended at the end to avoid overwriting."
+ )
+ );
+ }
+
+ DebugBreak.boolValue = EditorGUILayout.Toggle
+ (
+ new GUIContent
+ (
+ text: "Debug Break",
+ tooltip: "If true, it pauses the editor"
+ ),
+ DebugBreak.boolValue
+ );
+
+ EditorGUILayout.PropertyField( UnityEvents );
+
+ EditorGUIUtility.labelWidth = defaultLabelWidth;
+ EditorGUIUtility.fieldWidth = defaultFieldWidth;
+
+ serializedObject.ApplyModifiedProperties();
+ }
+
+ #endregion
+
+ #region Methods -> Private
+
+ private void SetDefaultDebugPacketValues( SerializedProperty debugPacketSerializedProperty )
+ {
+ GraphyDebugger.DebugPacket debugPacket = new GraphyDebugger.DebugPacket();
+
+ debugPacketSerializedProperty.GetArrayElementAtIndex( debugPacketSerializedProperty.arraySize - 1 )
+ .FindPropertyRelative( "Active" )
+ .boolValue = debugPacket.Active;
+
+ debugPacketSerializedProperty.GetArrayElementAtIndex( debugPacketSerializedProperty.arraySize - 1 )
+ .FindPropertyRelative( "Id" )
+ .intValue = debugPacketSerializedProperty.arraySize;
+
+ debugPacketSerializedProperty.GetArrayElementAtIndex( debugPacketSerializedProperty.arraySize - 1 )
+ .FindPropertyRelative( "ExecuteOnce" )
+ .boolValue = debugPacket.ExecuteOnce;
+
+ debugPacketSerializedProperty.GetArrayElementAtIndex( debugPacketSerializedProperty.arraySize - 1 )
+ .FindPropertyRelative( "InitSleepTime" )
+ .floatValue = debugPacket.InitSleepTime;
+
+ debugPacketSerializedProperty.GetArrayElementAtIndex( debugPacketSerializedProperty.arraySize - 1 )
+ .FindPropertyRelative( "ExecuteSleepTime" )
+ .floatValue = debugPacket.ExecuteSleepTime;
+ }
+
+ private string GetComparerStringFromDebugVariable( GraphyDebugger.DebugVariable debugVariable )
+ {
+ switch( debugVariable )
+ {
+ case GraphyDebugger.DebugVariable.Fps:
+ return "FPS Current";
+ case GraphyDebugger.DebugVariable.Fps_Min:
+ return "FPS Min";
+ case GraphyDebugger.DebugVariable.Fps_Max:
+ return "FPS Max";
+ case GraphyDebugger.DebugVariable.Fps_Avg:
+ return "FPS Avg";
+
+ case GraphyDebugger.DebugVariable.Ram_Allocated:
+ return "Ram Allocated";
+ case GraphyDebugger.DebugVariable.Ram_Reserved:
+ return "Ram Reserved";
+ case GraphyDebugger.DebugVariable.Ram_Mono:
+ return "Ram Mono";
+
+ case GraphyDebugger.DebugVariable.Audio_DB:
+ return "Audio DB";
+
+ default:
+ return null;
+ }
+ }
+
+ private string GetComparerStringFromDebugComparer( GraphyDebugger.DebugComparer debugComparer )
+ {
+ switch( debugComparer )
+ {
+ case GraphyDebugger.DebugComparer.Less_than:
+ return "<";
+ case GraphyDebugger.DebugComparer.Equals_or_less_than:
+ return "<=";
+ case GraphyDebugger.DebugComparer.Equals:
+ return "==";
+ case GraphyDebugger.DebugComparer.Equals_or_greater_than:
+ return ">=";
+ case GraphyDebugger.DebugComparer.Greater_than:
+ return ">";
+
+ default:
+ return null;
+ }
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyDebuggerEditor.cs.meta b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyDebuggerEditor.cs.meta
new file mode 100644
index 0000000..576169a
--- /dev/null
+++ b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyDebuggerEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 4a96825e094d61441b5247d0c32652b3
+timeCreated: 1514907656
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyEditorStyle.cs b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyEditorStyle.cs
new file mode 100644
index 0000000..2d17c76
--- /dev/null
+++ b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyEditorStyle.cs
@@ -0,0 +1,118 @@
+/* ---------------------------------------
+ * Author: Martin Pane (martintayx@gmail.com) (@tayx94)
+ * Contributors: https://github.com/Tayx94/graphy/graphs/contributors
+ * Project: Graphy - Ultimate Stats Monitor
+ * Date: 02-Jan-18
+ * Studio: Tayx
+ *
+ * Git repo: https://github.com/Tayx94/graphy
+ *
+ * This project is released under the MIT license.
+ * Attribution is not required, but it is always welcomed!
+ * -------------------------------------*/
+
+using System;
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+
+namespace Tayx.Graphy
+{
+ internal static class GraphyEditorStyle
+ {
+ #region Variables -> Private
+
+ private static Texture2D _managerLogoTexture = null;
+ private static Texture2D _debuggerLogoTexture = null;
+ private static GUISkin m_skin = null;
+ private static GUIStyle m_headerStyle1 = null;
+ private static GUIStyle m_headerStyle2 = null;
+ private static GUIStyle m_foldoutStyle = null;
+ private static string path;
+
+ #endregion
+
+ #region Properties -> Public
+
+ public static Texture2D ManagerLogoTexture => _managerLogoTexture;
+ public static Texture2D DebuggerLogoTexture => _debuggerLogoTexture;
+ public static GUISkin Skin => m_skin;
+ public static GUIStyle HeaderStyle1 => m_headerStyle1;
+ public static GUIStyle HeaderStyle2 => m_headerStyle2;
+ public static GUIStyle FoldoutStyle => m_foldoutStyle;
+
+ #endregion
+
+ #region Static Constructor
+
+ static GraphyEditorStyle()
+ {
+ string managerLogoGuid = AssetDatabase.FindAssets( $"Manager_Logo_{(EditorGUIUtility.isProSkin ? "White" : "Dark")}" )[ 0 ];
+ string debuggerLogoGuid = AssetDatabase.FindAssets( $"Debugger_Logo_{(EditorGUIUtility.isProSkin ? "White" : "Dark")}" )[ 0 ];
+ string guiSkinGuid = AssetDatabase.FindAssets( "GraphyGUISkin" )[ 0 ];
+
+ _managerLogoTexture = AssetDatabase.LoadAssetAtPath
+ (
+ AssetDatabase.GUIDToAssetPath( managerLogoGuid )
+ );
+
+ _debuggerLogoTexture = AssetDatabase.LoadAssetAtPath
+ (
+ AssetDatabase.GUIDToAssetPath( debuggerLogoGuid )
+ );
+
+ m_skin = AssetDatabase.LoadAssetAtPath
+ (
+ AssetDatabase.GUIDToAssetPath( guiSkinGuid )
+ );
+
+ if( m_skin != null )
+ {
+ m_headerStyle1 = m_skin.GetStyle( "Header1" );
+ m_headerStyle2 = m_skin.GetStyle( "Header2" );
+
+ SetGuiStyleFontColor
+ (
+ guiStyle: m_headerStyle2,
+ color: EditorGUIUtility.isProSkin ? Color.white : Color.black
+ );
+ }
+ else
+ {
+ m_headerStyle1 = EditorStyles.boldLabel;
+ m_headerStyle2 = EditorStyles.boldLabel;
+ }
+
+ m_foldoutStyle = new GUIStyle( EditorStyles.foldout )
+ {
+ font = m_headerStyle2.font,
+ fontStyle = m_headerStyle2.fontStyle,
+ contentOffset = Vector2.down * 3f
+ };
+
+ SetGuiStyleFontColor
+ (
+ guiStyle: m_foldoutStyle,
+ color: EditorGUIUtility.isProSkin ? Color.white : Color.black
+ );
+ }
+
+ #endregion
+
+ #region Methods -> Private
+
+ private static void SetGuiStyleFontColor( GUIStyle guiStyle, Color color )
+ {
+ guiStyle.normal.textColor = color;
+ guiStyle.hover.textColor = color;
+ guiStyle.active.textColor = color;
+ guiStyle.focused.textColor = color;
+ guiStyle.onNormal.textColor = color;
+ guiStyle.onHover.textColor = color;
+ guiStyle.onActive.textColor = color;
+ guiStyle.onFocused.textColor = color;
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyEditorStyle.cs.meta b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyEditorStyle.cs.meta
new file mode 100644
index 0000000..b2cd77c
--- /dev/null
+++ b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyEditorStyle.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1bb06e7c222a60f47a476e2648224330
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyManagerEditor.cs b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyManagerEditor.cs
new file mode 100644
index 0000000..d4b9399
--- /dev/null
+++ b/Viagg-io/Assets/Packages/Graphy - Ultimate Stats Monitor/Editor/GraphyManagerEditor.cs
@@ -0,0 +1,873 @@
+/* ---------------------------------------
+ * Author: Martin Pane (martintayx@gmail.com) (@tayx94)
+ * Contributors: https://github.com/Tayx94/graphy/graphs/contributors
+ * Project: Graphy - Ultimate Stats Monitor
+ * Date: 20-Dec-17
+ * Studio: Tayx
+ *
+ * Git repo: https://github.com/Tayx94/graphy
+ *
+ * This project is released under the MIT license.
+ * Attribution is not required, but it is always welcomed!
+ * -------------------------------------*/
+
+using System;
+using UnityEngine;
+using System.IO;
+using UnityEditor;
+
+namespace Tayx.Graphy
+{
+ [CustomEditor( typeof( GraphyManager ) )]
+ internal class GraphyManagerEditor : Editor
+ {
+ #region Variables -> Private
+
+ private GraphyManager m_target;
+
+ private int[] m_spectrumSizeValues =
+ {
+ 128,
+ 256,
+ 512,
+ 1024,
+ 2048,
+ 4096,
+ 8192
+ };
+
+ #region Section -> Settings
+
+ private SerializedProperty m_graphyMode;
+
+ private SerializedProperty m_enableOnStartup;
+
+ private SerializedProperty m_keepAlive;
+
+ private SerializedProperty m_background;
+ private SerializedProperty m_backgroundColor;
+
+ private SerializedProperty m_enableHotkeys;
+
+ private SerializedProperty m_toggleModeKeyCode;
+ private SerializedProperty m_toggleModeCtrl;
+ private SerializedProperty m_toggleModeAlt;
+
+ private SerializedProperty m_toggleActiveKeyCode;
+ private SerializedProperty m_toggleActiveCtrl;
+ private SerializedProperty m_toggleActiveAlt;
+
+
+ private SerializedProperty m_graphModulePosition;
+ private SerializedProperty m_graphModuleOffset;
+
+ #endregion
+
+ #region Section -> FPS
+
+ private bool m_fpsModuleInspectorToggle = true;
+
+ private SerializedProperty m_fpsModuleState;
+
+ private SerializedProperty m_goodFpsColor;
+ private SerializedProperty m_goodFpsThreshold;
+
+ private SerializedProperty m_cautionFpsColor;
+ private SerializedProperty m_cautionFpsThreshold;
+
+ private SerializedProperty m_criticalFpsColor;
+
+ private SerializedProperty m_fpsGraphResolution;
+
+ private SerializedProperty m_fpsTextUpdateRate;
+
+ #endregion
+
+ #region Section -> RAM
+
+ private bool m_ramModuleInspectorToggle = true;
+
+ private SerializedProperty m_ramModuleState;
+
+ private SerializedProperty m_allocatedRamColor;
+ private SerializedProperty m_reservedRamColor;
+ private SerializedProperty m_monoRamColor;
+
+ private SerializedProperty m_ramGraphResolution;
+
+ private SerializedProperty m_ramTextUpdateRate;
+
+ #endregion
+
+ #region Section -> Audio
+
+ private bool m_audioModuleInspectorToggle = true;
+
+ private SerializedProperty m_findAudioListenerInCameraIfNull;
+
+ private SerializedProperty m_audioListener;
+
+ private SerializedProperty m_audioModuleState;
+
+ private SerializedProperty m_audioGraphColor;
+
+ private SerializedProperty m_audioGraphResolution;
+
+ private SerializedProperty m_audioTextUpdateRate;
+
+ private SerializedProperty m_FFTWindow;
+
+ private SerializedProperty m_spectrumSize;
+
+ #endregion
+
+ #region Section -> Advanced Settings
+
+ private bool m_advancedModuleInspectorToggle = true;
+
+ private SerializedProperty m_advancedModulePosition;
+
+ private SerializedProperty m_advancedModuleOffset;
+
+ private SerializedProperty m_advancedModuleState;
+
+ #endregion
+
+ #endregion
+
+ #region Methods -> Unity Callbacks
+
+ private void OnEnable()
+ {
+ m_target = (GraphyManager) target;
+
+ SerializedObject serObj = serializedObject;
+
+ #region Section -> Settings
+
+ m_graphyMode = serObj.FindProperty( "m_graphyMode" );
+
+ m_enableOnStartup = serObj.FindProperty( "m_enableOnStartup" );
+
+ m_keepAlive = serObj.FindProperty( "m_keepAlive" );
+
+ m_background = serObj.FindProperty( "m_background" );
+ m_backgroundColor = serObj.FindProperty( "m_backgroundColor" );
+
+ m_enableHotkeys = serObj.FindProperty( "m_enableHotkeys" );
+
+ m_toggleModeKeyCode = serObj.FindProperty( "m_toggleModeKeyCode" );
+
+ m_toggleModeCtrl = serObj.FindProperty( "m_toggleModeCtrl" );
+ m_toggleModeAlt = serObj.FindProperty( "m_toggleModeAlt" );
+
+ m_toggleActiveKeyCode = serObj.FindProperty( "m_toggleActiveKeyCode" );
+
+ m_toggleActiveCtrl = serObj.FindProperty( "m_toggleActiveCtrl" );
+ m_toggleActiveAlt = serObj.FindProperty( "m_toggleActiveAlt" );
+
+ m_graphModulePosition = serObj.FindProperty( "m_graphModulePosition" );
+
+ m_graphModuleOffset = serObj.FindProperty( "m_graphModuleOffset" );
+
+ #endregion
+
+ #region Section -> FPS
+
+ m_fpsModuleState = serObj.FindProperty( "m_fpsModuleState" );
+
+ m_goodFpsColor = serObj.FindProperty( "m_goodFpsColor" );
+ m_goodFpsThreshold = serObj.FindProperty( "m_goodFpsThreshold" );
+
+ m_cautionFpsColor = serObj.FindProperty( "m_cautionFpsColor" );
+ m_cautionFpsThreshold = serObj.FindProperty( "m_cautionFpsThreshold" );
+
+ m_criticalFpsColor = serObj.FindProperty( "m_criticalFpsColor" );
+
+ m_fpsGraphResolution = serObj.FindProperty( "m_fpsGraphResolution" );
+
+ m_fpsTextUpdateRate = serObj.FindProperty( "m_fpsTextUpdateRate" );
+
+ #endregion
+
+ #region Section -> RAM
+
+ m_ramModuleState = serObj.FindProperty( "m_ramModuleState" );
+
+ m_allocatedRamColor = serObj.FindProperty( "m_allocatedRamColor" );
+ m_reservedRamColor = serObj.FindProperty( "m_reservedRamColor" );
+ m_monoRamColor = serObj.FindProperty( "m_monoRamColor" );
+
+ m_ramGraphResolution = serObj.FindProperty( "m_ramGraphResolution" );
+
+ m_ramTextUpdateRate = serObj.FindProperty( "m_ramTextUpdateRate" );
+
+ #endregion
+
+ #region Section -> Audio
+
+ m_findAudioListenerInCameraIfNull = serObj.FindProperty( "m_findAudioListenerInCameraIfNull" );
+
+ m_audioListener = serObj.FindProperty( "m_audioListener" );
+
+ m_audioModuleState = serObj.FindProperty( "m_audioModuleState" );
+
+ m_audioGraphColor = serObj.FindProperty( "m_audioGraphColor" );
+
+ m_audioGraphResolution = serObj.FindProperty( "m_audioGraphResolution" );
+
+ m_audioTextUpdateRate = serObj.FindProperty( "m_audioTextUpdateRate" );
+
+ m_FFTWindow = serObj.FindProperty( "m_FFTWindow" );
+
+ m_spectrumSize = serObj.FindProperty( "m_spectrumSize" );
+
+ #endregion
+
+ #region Section -> Advanced Settings
+
+ m_advancedModulePosition = serObj.FindProperty( "m_advancedModulePosition" );
+
+ m_advancedModuleOffset = serObj.FindProperty( "m_advancedModuleOffset" );
+
+ m_advancedModuleState = serObj.FindProperty( "m_advancedModuleState" );
+
+ #endregion
+ }
+
+ #endregion
+
+ #region Methods -> Public Override
+
+ public override void OnInspectorGUI()
+ {
+ if( m_target == null && target == null )
+ {
+ base.OnInspectorGUI();
+ return;
+ }
+
+ float defaultLabelWidth = EditorGUIUtility.labelWidth;
+ float defaultFieldWidth = EditorGUIUtility.fieldWidth;
+
+ //===== CONTENT REGION ========================================================================
+
+ GUILayout.Space( 20 );
+
+ #region Section -> Logo
+
+ if( GraphyEditorStyle.ManagerLogoTexture != null )
+ {
+ GUILayout.Label
+ (
+ image: GraphyEditorStyle.ManagerLogoTexture,
+ style: new GUIStyle( GUI.skin.GetStyle( "Label" ) )
+ {
+ alignment = TextAnchor.UpperCenter
+ }
+ );
+
+ GUILayout.Space( 10 );
+ }
+ else
+ {
+ EditorGUILayout.LabelField
+ (
+ label: "[ GRAPHY - MANAGER ]",
+ style: GraphyEditorStyle.HeaderStyle1
+ );
+ }
+
+ #endregion
+
+ GUILayout.Space( 5 ); //Extra pixels added when the logo is used.
+
+ #region Section -> Settings
+
+ EditorGUIUtility.labelWidth = 130;
+ EditorGUIUtility.fieldWidth = 35;
+
+ EditorGUILayout.PropertyField
+ (
+ m_graphyMode,
+ new GUIContent
+ (
+ text: "Graphy Mode",
+ tooltip:
+ "LIGHT mode increases compatibility with mobile and older, less powerful GPUs, but reduces the maximum graph resolutions to 128."
+ )
+ );
+
+ GUILayout.Space( 10 );
+
+ m_enableOnStartup.boolValue = EditorGUILayout.Toggle
+ (
+ new GUIContent
+ (
+ text: "Enable On Startup",
+ tooltip:
+ "If ticked, Graphy will be displayed by default on startup, otherwise it will initiate and hide."
+ ),
+ value: m_enableOnStartup.boolValue
+ );
+
+ // This is a neat trick to hide Graphy in the Scene if it's going to be deactivated in play mode so that it doesn't use screen space.
+ if( !Application.isPlaying )
+ {
+ m_target.GetComponent