diff --git a/SimpleTools/LICENSE.md b/SimpleTools/LICENSE.md deleted file mode 100644 index 58c3550..0000000 --- a/SimpleTools/LICENSE.md +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2021 Geri - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/SimpleTools/LICENSE.md.meta b/SimpleTools/LICENSE.md.meta deleted file mode 100644 index de5ec90..0000000 --- a/SimpleTools/LICENSE.md.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 535f36a1918d4d2479031f3ca2725323 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/README.md b/SimpleTools/README.md deleted file mode 100644 index b9678df..0000000 --- a/SimpleTools/README.md +++ /dev/null @@ -1,145 +0,0 @@ -# Simple Tools - -This package contains simple tools to use in your project. - -This package will be updated once I find another useful tool or someone suggest me one. - -## Features - -- **AudioManager** with Play, Pause and most of the other basic things, as well as some effects like FadeIn or FadeOut. -- Some Cinemachine tools for making a **camera trigger** and an easy way for creating a **screen shake camera.** -- Basic **dialogue system** that works with TextMeshPro. -- Basic menu with **music and SFX sliders** as well as **resolution and quality dropdowns.** -- An **object pooler** with the ability to create pools with an undetermined size. -- A basic **scene manager** with a loading screen with progress bar. - -All of that comes with some editor menu items for creating all of that as fast as possible. - -## How to install - -First install the TextMeshPro and Cinemachine into your Unity project - -### Git Installation (Best way to get latest version) - -If you have git in your computer, you can open Package Manager inside Unity, select "Add package from Git url...", and paste link [https://github.com/GerardGascon/SimpleTools.git](https://github.com/GerardGascon/SimpleTools.git) - -or - -Open the manifest.json file of your Unity project. Add "com.geri.simpletools": "[https://github.com/GerardGascon/SimpleTools.git](https://github.com/GerardGascon/SimpleTools.git)" - -### Manual Installation - -Download latest package from the Release section Import SimpleTools.unitypackage to your Unity Project - -## Usage - -### AudioManager - -```csharp -using SimpleTools.AudioManager; - -AudioManager.instance.Play("Name"); //Plays the sound with that name -AudioManager.instance.Play("Name", 1f); //Starts playing the sound "Name" in 1 second -AudioManager.instance.PlayOneShot("Name"); //Plays one shot of that sound (Useful for repeated sounds) -AudioManager.instance.PlayWithIntro("Intro", "Loop"); //Plays the intro and then the loop - -AudioManager.instance.Pause("Name"); //Pauses the sound -AudioManager.instance.UnPause("Name"); //Unpauses the sound - -AudioManager.instance.Stop("Name"); //Stops the sound -AudioManager.instance.StopAll(); //Stops all the sounds that are being played - -AudioManager.instance.GetSource("Name"); //Gets the AudioSource with that name - -AudioManager.instance.FadeIn("Name", 1f); //Fade In the source with a specific duration -AudioManager.instance.FadeOut("Name", 1f); //Fade Out the source with a specific duration - -AudioManager.instance.PlayMuted("Name"); //Play a sound muted -AudioManager.instance.FadeMutedIn("Name", 1f); //Fade In a muted sound with a specific duration -AudioManager.instance.FadeMutedOut("Name", 1f); //Fade Out a sound without stopping it -``` - -### ObjectPooler - -The SpawnFromPool function always return a GameObject - -```csharp -using SimpleTools.ObjectPooler; - -Pool pool; //The pool scriptable object goes here -Pooler.CreatePools(pool); //Create the pool, without creating it you cannot spawn it -Pool[] pools; -Pooler.CreatePools(pools); //Create multiple pools -Pooler.Destroy(gameObject); //Destroys a GameObject and returns it into the pool scene - -Pooler.SpawnFromPool("Name", Vector3.zero); //Spawns an object into a specific position -Pooler.SpawnFromPool("Name", Vector3.zero, Quaternion.identity); //Spawn into a specific position and rotation -Pooler.SpawnFromPool("Name", Vector3.zero, transform); //Spawn into a specific position and parent -Pooler.SpawnFromPool("Name", Vector3.zero, Quaternion.identity, transform); //Spawn into a specific position, rotation and parent -Pooler.SpawnFromPool("Name", Vector3.zero, transform, true); //Spawn into a specific position, parent and instantiate in worldSpace or not -Pooler.SpawnFromPool("Name", Vector3.zero, Quaternion.identity, transform, true); //Spawn into a specific position, rotation, parent and instantiate in worldSpace or not -``` - -### Dialogue System - -The Dialogue function returns a bool (true if it's talking, false if it has ended) - -```csharp -using SimpleTools.DialogueSystem; - -Dialogue dialogue; //The dialogue scriptable object goes here -DialogueSystem.instance.Dialogue(dialogue); //Start/Continue the dialogue -DialogueSystem.instance.Dialogue(dialogue, "Sound1", "Sound2"); //Start/Continue the dialogue with a random set of sounds for the text reveal -``` - -Text commands: - -```html - --> Sets font color within tags - --> Sets font size within tags - --> Draws a sprite from the TextMeshPro - --> Pauses during a period of time - --> Reproduces an animation - --> Changes reveal speed -``` - -### SceneManager - -```csharp -using SimpleTools.SceneManagement; - -Loader.Load(0); //Loads a scene with a specific build index -Loader.Load("Scene"); //Loads a scene with a specific name -``` - -### ScreenShake - -```csharp -using SimpleTools.Cinemachine; - -ScreenShake.Shake(1f, .25f); //Shakes the camera with an intensity and duration -``` - -### Timer - -```csharp -using SimpleTools.Timer; - -//Setup a stopwatch that updates at an unscaled time -Timer timer = textMeshProText.SetupTimer(TimerType.Stopwatch, TimerUpdate.UnscaledTime); -//Setup a clock -Timer timer = textMeshProText.SetupTimer(TimerType.Clock, TimerUpdate.UnscaledTime); -//Setup a countdown with the default time of 60 seconds -Timer timer = textMeshProText.SetupTimer(TimerType.Countdown, TimerUpdate.UnscaledTime, 60f); - -timer.Play(); //Play or resume the timer -timer.Stop(); //Pause the timer -timer.ResetTimer(); //Pause and sets the time to the default one -timer.Restart(); //Restarts the timer -``` - -### Editor - -You can easily set up some things by right clicking in your Project Tab and then selecting Tools and clicking on the one you want to create. - -Also you can right click in the Hierarchy for easily creating some GameObjects with the Tools in it. \ No newline at end of file diff --git a/SimpleTools/README.md.meta b/SimpleTools/README.md.meta deleted file mode 100644 index 3c5c492..0000000 --- a/SimpleTools/README.md.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: ee23fd1b6b87e954f836c97747d4c083 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools.meta b/SimpleTools/Tools.meta deleted file mode 100644 index b32c30e..0000000 --- a/SimpleTools/Tools.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 78a1b199ab0716542b34cc9a3dd3a9df -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/AudioManager.meta b/SimpleTools/Tools/AudioManager.meta deleted file mode 100644 index f12a26c..0000000 --- a/SimpleTools/Tools/AudioManager.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1d98cf7b5d008ba4a832612b94195e04 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/AudioManager/AudioManager.cs b/SimpleTools/Tools/AudioManager/AudioManager.cs deleted file mode 100644 index 7ce5230..0000000 --- a/SimpleTools/Tools/AudioManager/AudioManager.cs +++ /dev/null @@ -1,271 +0,0 @@ -using System.Collections; -using UnityEngine; -using System; - -namespace SimpleTools.AudioManager { - public class AudioManager : MonoBehaviour { - - public static AudioManager instance; - - [SerializeField] Sounds soundList = default; - - void Awake() { - if (instance == null) { - instance = this; - } else { - Destroy(gameObject); - return; - } - DontDestroyOnLoad(gameObject); - - foreach (Sounds.List s in soundList.sounds) { - if (string.IsNullOrEmpty(s.name) || string.IsNullOrWhiteSpace(s.name)) { - Debug.LogWarning("The name one sound is empty"); - continue; - } - - GameObject sound = new GameObject(s.name); - sound.transform.parent = transform; - s.source = sound.AddComponent(); - - if (soundList.mainMixer && soundList.sfxMixer) { - if (s.type == Sounds.List.Type.Music) - s.source.outputAudioMixerGroup = soundList.mainMixer; - else - s.source.outputAudioMixerGroup = soundList.sfxMixer; - } - - s.source.clip = s.clip; - - s.source.volume = s.volume; - s.source.pitch = s.pitch; - s.source.loop = s.loop; - } - } - - #region Play - /// Use this to play a sound with a specific name - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void Play(string name) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - return; - } - s.source.pitch = s.RandomPitch; - s.source.volume = s.RandomVolume; - s.source.Play(); - } - /// Use this to play a sound with a specific name and with a certain delay - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void Play(string name, float delay) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - return; - } - s.source.pitch = s.RandomPitch; - s.source.volume = s.RandomVolume; - s.source.PlayDelayed(delay); - } - /// Use this to play one shot of a sound with a specific name - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void PlayOneShot(string name) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - return; - } - s.source.pitch = s.RandomPitch; - s.source.volume = s.RandomVolume; - s.source.PlayOneShot(s.clip); - } - /// Use this to play an intro song and then start playing the song loop - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void PlayWithIntro(string intro, string song) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == intro); - if (s == null) { - Debug.LogWarning("Sound: " + intro + " not found!"); - return; - } - s.source.pitch = s.RandomPitch; - s.source.volume = s.RandomVolume; - s.source.Play(); - - float introDuration = s.clip.length; - Play(song, introDuration); - } - /// Use this to play one shot of a random sound within a list - /// They have to be in the Sound asset referenced in the AudioManager instance - /// - public void PlayRandomSound(params string[] names) { - int random = UnityEngine.Random.Range(0, names.Length); - PlayOneShot(names[random]); - } - #endregion - #region Pause - /// Use this to pause a sound with a specific name - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void Pause(string name) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - return; - } - s.source.pitch = s.RandomPitch; - s.source.volume = s.RandomVolume; - s.source.Pause(); - } - /// Use this to unpause a sound with a specific name - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void UnPause(string name) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - return; - } - s.source.pitch = s.RandomPitch; - s.source.volume = s.RandomVolume; - s.source.UnPause(); - } - #endregion - #region Stop - /// Use this to stop a sound with a specific name - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void Stop(string name) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - return; - } - s.source.pitch = s.RandomPitch; - s.source.volume = s.RandomVolume; - s.source.Stop(); - } - /// Use this to stop all the sounds - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void StopAll() { - foreach (Sounds.List s in soundList.sounds) { - if (s.source) { - s.source.Stop(); - } - } - } - #endregion - /// This function returns the AudioSource that contains a specific sound - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public AudioSource GetSource(string name) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - return null; - } - return s.source; - } - #region Fades - /// Use this to start playing a sound with a fade in - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void FadeIn(string name, float duration) { - StartCoroutine(FadeInCoroutine(name, duration)); - } - IEnumerator FadeInCoroutine(string name, float fadeTime) { - AudioSource audioSource = GetSource(name); - if (audioSource != null && !audioSource.isPlaying) { - float volume = audioSource.volume; - audioSource.volume = 0; - audioSource.Play(); - while (audioSource.volume < volume) { - audioSource.volume += Time.deltaTime / fadeTime; - yield return null; - } - - audioSource.volume = volume; - } - } - /// Use this to stop playing a sound with a fade out - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void FadeOut(string name, float duration) { - StartCoroutine(FadeOutCoroutine(name, duration)); - } - IEnumerator FadeOutCoroutine(string name, float fadeTime) { - AudioSource audioSource = GetSource(name); - - if (audioSource && audioSource.isPlaying) { - float startVolume = audioSource.volume; - - while (audioSource.volume > 0) { - audioSource.volume -= startVolume * Time.deltaTime / fadeTime; - yield return null; - } - - audioSource.Stop(); - audioSource.volume = startVolume; - } - } - - /// Use this to start playing a sound muted - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void PlayMuted(string name) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - return; - } - s.source.pitch = s.RandomPitch; - s.source.volume = 0f; - s.source.Play(); - } - /// Use this to fade in a sound that is currently muted - /// It has to be in the Sound asset referenced in the AudioManager instance - /// WARNING: If the PlayMuted hasn't been called before, this function won't work - /// - public void FadeMutedIn(string name, float duration) { - StartCoroutine(FadeMutedInCoroutine(name, duration)); - } - IEnumerator FadeMutedInCoroutine(string name, float fadeTime) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - yield break; - } - - while (s.source.volume < s.volume) { - s.source.volume += Time.deltaTime / fadeTime; - yield return null; - } - s.source.volume = s.volume; - } - /// Use this to fade out a sound and keep playing that muted - /// It has to be in the Sound asset referenced in the AudioManager instance - /// - public void FadeMutedOut(string name, float duration) { - StartCoroutine(FadeMutedOutCoroutine(name, duration)); - } - IEnumerator FadeMutedOutCoroutine(string name, float fadeTime) { - Sounds.List s = Array.Find(soundList.sounds, sound => sound.name == name); - if (s == null) { - Debug.LogWarning("Sound: " + name + " not found!"); - yield break; - } - - while (s.source.volume > 0) { - s.source.volume -= Time.deltaTime / fadeTime; - yield return null; - } - s.source.volume = 0; - } - #endregion - } -} \ No newline at end of file diff --git a/SimpleTools/Tools/AudioManager/AudioManager.cs.meta b/SimpleTools/Tools/AudioManager/AudioManager.cs.meta deleted file mode 100644 index 4a77e93..0000000 --- a/SimpleTools/Tools/AudioManager/AudioManager.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7d2879f3876727040b4f0cc799ec7ada -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/AudioManager/AudioManager.png b/SimpleTools/Tools/AudioManager/AudioManager.png deleted file mode 100644 index 712262f..0000000 Binary files a/SimpleTools/Tools/AudioManager/AudioManager.png and /dev/null differ diff --git a/SimpleTools/Tools/AudioManager/AudioManager.png.meta b/SimpleTools/Tools/AudioManager/AudioManager.png.meta deleted file mode 100644 index 61ce9f6..0000000 --- a/SimpleTools/Tools/AudioManager/AudioManager.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: af0857324620d1d4b8b6bf41b6cdecfc -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/AudioManager/Sounds.cs b/SimpleTools/Tools/AudioManager/Sounds.cs deleted file mode 100644 index 35e2dd0..0000000 --- a/SimpleTools/Tools/AudioManager/Sounds.cs +++ /dev/null @@ -1,53 +0,0 @@ -using UnityEngine; -using UnityEngine.Audio; - -namespace SimpleTools.AudioManager { - [CreateAssetMenu(fileName = "Sounds", menuName = "Simple Tools/Sounds", order = 11)] - public class Sounds : ScriptableObject { - - [Tooltip("The music mixer.")] - public AudioMixerGroup mainMixer = default; - [Tooltip("The SFX mixer.")] - public AudioMixerGroup sfxMixer = default; - - public List[] sounds; - - [System.Serializable] - public class List { - [Tooltip("Name of the sound. Each name has to be different between each other.")] - public string name; - - public AudioClip clip; - - [System.Serializable] public enum Type { Music, SFX } - [Space] - [Tooltip("Is it part of the music or the SFX?")] public Type type; - - [Space] - [Tooltip("Default volume of the sound."), Range(0f, 1f)] public float volume; - [Tooltip("Variance percentage of the volume"), Range(0f, 1f)] public float volumeVariance; - [Tooltip("Default pitch of the sound."), Range(.1f, 3f)] public float pitch; - [Tooltip("Variance percentage of the pitch"), Range(0f, 1f)] public float pitchVariance; - - public bool loop; - - [HideInInspector] public AudioSource source; - - float randomVolume; - public float RandomVolume { - get { - randomVolume = volume * (1f + Random.Range(-volumeVariance / 2f, volumeVariance / 2f)); - return randomVolume; - } - } - - float randomPitch; - public float RandomPitch { - get { - randomPitch = pitch * (1f + Random.Range(-pitchVariance / 2f, pitchVariance / 2f)); - return randomPitch; - } - } - } - } -} \ No newline at end of file diff --git a/SimpleTools/Tools/AudioManager/Sounds.cs.meta b/SimpleTools/Tools/AudioManager/Sounds.cs.meta deleted file mode 100644 index a22e5ea..0000000 --- a/SimpleTools/Tools/AudioManager/Sounds.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 6ded47588579f3047b1c3cd72cd87044 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: af0857324620d1d4b8b6bf41b6cdecfc, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/Cinemachine.meta b/SimpleTools/Tools/Cinemachine.meta deleted file mode 100644 index 608d7cd..0000000 --- a/SimpleTools/Tools/Cinemachine.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5a2ff5ceb779d824d811d139fa608262 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/Cinemachine/CMCameraTrigger.cs b/SimpleTools/Tools/Cinemachine/CMCameraTrigger.cs deleted file mode 100644 index 8afd47a..0000000 --- a/SimpleTools/Tools/Cinemachine/CMCameraTrigger.cs +++ /dev/null @@ -1,40 +0,0 @@ -using UnityEngine; -using Cinemachine; - -namespace SimpleTools.Cinemachine { - public class CMCameraTrigger : MonoBehaviour { - - CinemachineVirtualCamera vcam; - - void Awake() { - vcam = GetComponentInChildren(true); - vcam.gameObject.SetActive(false); - } - - #region 3D - void OnTriggerEnter(Collider col) { - if (col.CompareTag("Player")) { - vcam.gameObject.SetActive(true); - } - } - void OnTriggerExit(Collider col) { - if (col.CompareTag("Player")) { - vcam.gameObject.SetActive(true); - } - } - #endregion - - #region 2D - void OnTriggerEnter2D(Collider2D col) { - if (col.CompareTag("Player")) { - vcam.gameObject.SetActive(true); - } - } - void OnTriggerExit2D(Collider2D col) { - if (col.CompareTag("Player")) { - vcam.gameObject.SetActive(false); - } - } - #endregion - } -} \ No newline at end of file diff --git a/SimpleTools/Tools/Cinemachine/CMCameraTrigger.cs.meta b/SimpleTools/Tools/Cinemachine/CMCameraTrigger.cs.meta deleted file mode 100644 index 7d3bb42..0000000 --- a/SimpleTools/Tools/Cinemachine/CMCameraTrigger.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 368758c1440a4cb4c867e140e8934c09 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/Cinemachine/ScreenShake.cs b/SimpleTools/Tools/Cinemachine/ScreenShake.cs deleted file mode 100644 index 5d4aaa5..0000000 --- a/SimpleTools/Tools/Cinemachine/ScreenShake.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Cinemachine; -using UnityEngine; - -namespace SimpleTools.Cinemachine { - public static class ScreenShake { - - static CinemachineVirtualCamera vCam; - static ScreenShakeUpdate shakeUpdate; - - class ScreenShakeUpdate : MonoBehaviour { - [HideInInspector] public float shakeTimer; - [HideInInspector] public float shakeTimerTotal; - [HideInInspector] public float startingIntensity; - - void Update() { - if (shakeTimer > 0) { - shakeTimer -= Time.deltaTime; - CinemachineBasicMultiChannelPerlin multiChannelPerlin = vCam.GetCinemachineComponent(); - multiChannelPerlin.m_AmplitudeGain = Mathf.Lerp(startingIntensity, 0f, 1 - (shakeTimer / shakeTimerTotal)); - } - } - } - - /// Shake the camera - /// It needs a cinemachine camera with a noise profile in it. - /// - public static void Shake(float intensity, float time) { - if (vCam == null) { - vCam = Camera.main.GetComponent().ActiveVirtualCamera.VirtualCameraGameObject.GetComponent(); - } - if (shakeUpdate == null) { - shakeUpdate = new GameObject("ShakeUpdate").AddComponent(); - } - shakeUpdate.startingIntensity = intensity; - shakeUpdate.shakeTimer = shakeUpdate.shakeTimerTotal = time; - } - } -} \ No newline at end of file diff --git a/SimpleTools/Tools/Cinemachine/ScreenShake.cs.meta b/SimpleTools/Tools/Cinemachine/ScreenShake.cs.meta deleted file mode 100644 index 048e505..0000000 --- a/SimpleTools/Tools/Cinemachine/ScreenShake.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 181034c7ad5ece241a2737ab35d47c5c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/DialogueSystem.meta b/SimpleTools/Tools/DialogueSystem.meta deleted file mode 100644 index b94d838..0000000 --- a/SimpleTools/Tools/DialogueSystem.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 645cca644899cc74882ea9bc1d9c5aa9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/DialogueSystem/Dialogue.cs b/SimpleTools/Tools/DialogueSystem/Dialogue.cs deleted file mode 100644 index 7b9ce5a..0000000 --- a/SimpleTools/Tools/DialogueSystem/Dialogue.cs +++ /dev/null @@ -1,16 +0,0 @@ -using UnityEngine; - -namespace SimpleTools.DialogueSystem { - [CreateAssetMenu(fileName = "New Dialogue", menuName = "Simple Tools/Dialogue", order = 11)] - public class Dialogue : ScriptableObject { - public DialogueBox[] sentences; - } - - [System.Serializable] - public class DialogueBox { - public bool displayName; - public string characterName; - public Sprite characterImage; - [TextArea(5, 10)] public string sentence; - } -} \ No newline at end of file diff --git a/SimpleTools/Tools/DialogueSystem/Dialogue.cs.meta b/SimpleTools/Tools/DialogueSystem/Dialogue.cs.meta deleted file mode 100644 index 63ccf99..0000000 --- a/SimpleTools/Tools/DialogueSystem/Dialogue.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bd553cd05b84d614b998afe62e37c17c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {fileID: 2800000, guid: 4dfc626116fd10c4f972c17720d957ac, type: 3} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/DialogueSystem/Dialogue.png b/SimpleTools/Tools/DialogueSystem/Dialogue.png deleted file mode 100644 index 3bff2d3..0000000 Binary files a/SimpleTools/Tools/DialogueSystem/Dialogue.png and /dev/null differ diff --git a/SimpleTools/Tools/DialogueSystem/Dialogue.png.meta b/SimpleTools/Tools/DialogueSystem/Dialogue.png.meta deleted file mode 100644 index 4991597..0000000 --- a/SimpleTools/Tools/DialogueSystem/Dialogue.png.meta +++ /dev/null @@ -1,96 +0,0 @@ -fileFormatVersion: 2 -guid: 4dfc626116fd10c4f972c17720d957ac -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/DialogueSystem/DialogueManager.cs b/SimpleTools/Tools/DialogueSystem/DialogueManager.cs deleted file mode 100644 index 4b025a9..0000000 --- a/SimpleTools/Tools/DialogueSystem/DialogueManager.cs +++ /dev/null @@ -1,111 +0,0 @@ -using System.Collections.Generic; -using TMPro; -using UnityEngine; -using UnityEngine.UI; - -namespace SimpleTools.DialogueSystem { - public class DialogueManager : MonoBehaviour { - - DialogueVertexAnimator dialogueVertexAnimator; - - Queue sentences; - Queue displayNames; - Queue characterNames; - Queue characterImages; - bool talking; - - public DialogueItems dialogueItems; - - public static DialogueManager instance; - void Awake() { - instance = this; - sentences = new Queue(); - displayNames = new Queue(); - characterNames = new Queue(); - characterImages = new Queue(); - - dialogueVertexAnimator = new DialogueVertexAnimator(dialogueItems.textBox); - } - - public bool Dialogue(Dialogue dialogue) { - return Dialogue(dialogue, string.Empty); - } - - public bool Dialogue(Dialogue dialogue, params string[] sounds) { - dialogueVertexAnimator.SetAudioSourceGroup(sounds); - - if (!talking) { - sentences.Clear(); - if (dialogue.sentences.Length != 0) { - foreach (DialogueBox sentence in dialogue.sentences) { - sentences.Enqueue(sentence.sentence); - displayNames.Enqueue(sentence.displayName); - characterNames.Enqueue(sentence.characterName); - characterImages.Enqueue(sentence.characterImage); - } - } else { - sentences.Enqueue("I am error. No text has been added"); - } - talking = true; - - if (sentences.Count == 0) { - talking = false; - return false; - } - - string sentenceToShow = sentences.Peek(); - bool displayName = displayNames.Peek(); - string characterName = characterNames.Peek(); - Sprite characterImage = characterImages.Peek(); - if (PlayDialogue(sentenceToShow, displayName, characterName, characterImage)) { - sentences.Dequeue(); - displayNames.Dequeue(); - characterNames.Dequeue(); - characterImages.Dequeue(); - } - return true; - } else { - if (sentences.Count == 0) { - talking = false; - return false; - } - - string sentenceToShow = sentences.Peek(); - bool displayName = displayNames.Peek(); - string characterName = characterNames.Peek(); - Sprite characterImage = characterImages.Peek(); - if (PlayDialogue(sentenceToShow, displayName, characterName, characterImage)) { - sentences.Dequeue(); - displayNames.Dequeue(); - characterNames.Dequeue(); - characterImages.Dequeue(); - } - return true; - } - } - - private Coroutine typeRoutine = null; - bool PlayDialogue(string message, bool displayName = false, string characterName = "", Sprite characterImage = null) { - if (dialogueVertexAnimator.IsMessageAnimating()) { - dialogueVertexAnimator.SkipToEndOfCurrentMessage(); - return false; //Next message hasn't been shown because the current one is still animating. - } - this.EnsureCoroutineStopped(ref typeRoutine); - dialogueVertexAnimator.textAnimating = false; - List commands = DialogueUtility.ProcessInputString(message, out string totalTextMessage); - typeRoutine = StartCoroutine(dialogueVertexAnimator.AnimateTextIn(commands, totalTextMessage, null)); - - dialogueItems.characterImage.sprite = characterImage; - dialogueItems.characterName.text = displayName ? characterName : "???"; - return true; //Next message shown successfully - } - } - - [System.Serializable] - public struct DialogueItems { - public Image characterImage; - public TMP_Text characterName; - public TMP_Text textBox; - public Canvas canvas; - } -} \ No newline at end of file diff --git a/SimpleTools/Tools/DialogueSystem/DialogueManager.cs.meta b/SimpleTools/Tools/DialogueSystem/DialogueManager.cs.meta deleted file mode 100644 index 1cc6cbc..0000000 --- a/SimpleTools/Tools/DialogueSystem/DialogueManager.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 23d6a059fd2bc464a9cba3a5ced1724d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/DialogueSystem/DialogueUtility.cs b/SimpleTools/Tools/DialogueSystem/DialogueUtility.cs deleted file mode 100644 index 98a67c3..0000000 --- a/SimpleTools/Tools/DialogueSystem/DialogueUtility.cs +++ /dev/null @@ -1,170 +0,0 @@ -using UnityEngine; -using System.Collections; -using System.Collections.Generic; -using System.Text.RegularExpressions; -using System; - -namespace SimpleTools.DialogueSystem { - public class DialogueUtility : MonoBehaviour { - - // grab the remainder of the text until ">" or end of string - const string REMAINDER_REGEX = "(.*?((?=>)|(/|$)))"; - const string PAUSE_REGEX_STRING = "" + REMAINDER_REGEX + ")>"; - static readonly Regex pauseRegex = new Regex(PAUSE_REGEX_STRING); - const string SOUND_REGEX_STRING = "" + REMAINDER_REGEX + ")>"; - static readonly Regex soundRegex = new Regex(SOUND_REGEX_STRING); - const string SPEED_REGEX_STRING = "" + REMAINDER_REGEX + ")>"; - static readonly Regex speedRegex = new Regex(SPEED_REGEX_STRING); - const string ANIM_START_REGEX_STRING = "" + REMAINDER_REGEX + ")>"; - static readonly Regex animStartRegex = new Regex(ANIM_START_REGEX_STRING); - const string ANIM_END_REGEX_STRING = ""; - static readonly Regex animEndRegex = new Regex(ANIM_END_REGEX_STRING); - - static readonly Dictionary pauseDictionary = new Dictionary{ - { "tiny", .1f }, - { "short", .25f }, - { "normal", 0.666f }, - { "long", 1f }, - { "read", 2f }, - }; - - public static List ProcessInputString(string message, out string processedMessage) { - List result = new List(); - processedMessage = message; - - processedMessage = HandlePauseTags(processedMessage, result); - processedMessage = HandleSoundTags(processedMessage, result); - processedMessage = HandleSpeedTags(processedMessage, result); - processedMessage = HandleAnimStartTags(processedMessage, result); - processedMessage = HandleAnimEndTags(processedMessage, result); - - return result; - } - - static string HandleAnimEndTags(string processedMessage, List result) { - MatchCollection animEndMatches = animEndRegex.Matches(processedMessage); - foreach (Match match in animEndMatches) { - result.Add(new DialogueCommand { - position = VisibleCharactersUpToIndex(processedMessage, match.Index), - type = DialogueCommandType.AnimEnd, - }); - } - processedMessage = Regex.Replace(processedMessage, ANIM_END_REGEX_STRING, ""); - return processedMessage; - } - - static string HandleAnimStartTags(string processedMessage, List result) { - MatchCollection animStartMatches = animStartRegex.Matches(processedMessage); - foreach (Match match in animStartMatches) { - string stringVal = match.Groups["anim"].Value; - result.Add(new DialogueCommand { - position = VisibleCharactersUpToIndex(processedMessage, match.Index), - type = DialogueCommandType.AnimStart, - textAnimValue = GetTextAnimationType(stringVal) - }); - } - processedMessage = Regex.Replace(processedMessage, ANIM_START_REGEX_STRING, ""); - return processedMessage; - } - - static string HandleSpeedTags(string processedMessage, List result) { - MatchCollection speedMatches = speedRegex.Matches(processedMessage); - foreach (Match match in speedMatches) { - string stringVal = match.Groups["speed"].Value; - if (!float.TryParse(stringVal, out float val)) { - val = 150f; - } - result.Add(new DialogueCommand { - position = VisibleCharactersUpToIndex(processedMessage, match.Index), - type = DialogueCommandType.TextSpeedChange, - floatValue = val - }); - } - processedMessage = Regex.Replace(processedMessage, SPEED_REGEX_STRING, ""); - return processedMessage; - } - - static string HandlePauseTags(string processedMessage, List result) { - MatchCollection pauseMatches = pauseRegex.Matches(processedMessage); - foreach (Match match in pauseMatches) { - string val = match.Groups["pause"].Value; - string pauseName = val; - Debug.Assert(pauseDictionary.ContainsKey(pauseName), "no pause registered for '" + pauseName + "'"); - result.Add(new DialogueCommand { - position = VisibleCharactersUpToIndex(processedMessage, match.Index), - type = DialogueCommandType.Pause, - floatValue = pauseDictionary[pauseName] - }); - } - processedMessage = Regex.Replace(processedMessage, PAUSE_REGEX_STRING, ""); - return processedMessage; - } - static string HandleSoundTags(string processedMessage, List result) { - MatchCollection soundMatches = soundRegex.Matches(processedMessage); - foreach (Match match in soundMatches) { - string val = match.Groups["sound"].Value; - string soundName = val; - result.Add(new DialogueCommand { - position = VisibleCharactersUpToIndex(processedMessage, match.Index), - type = DialogueCommandType.Sound, - stringValue = soundName - }); - } - processedMessage = Regex.Replace(processedMessage, SOUND_REGEX_STRING, ""); - return processedMessage; - } - - static TextAnimationType GetTextAnimationType(string stringVal) { - TextAnimationType result; - try { - result = (TextAnimationType)Enum.Parse(typeof(TextAnimationType), stringVal, true); - } catch (ArgumentException) { - Debug.LogError("Invalid Text Animation Type: " + stringVal); - result = TextAnimationType.none; - } - return result; - } - - static int VisibleCharactersUpToIndex(string message, int index) { - int result = 0; - bool insideBrackets = false; - for (int i = 0; i < index; i++) { - if (message[i] == '<') { - insideBrackets = true; - } else if (message[i] == '>') { - insideBrackets = false; - result--; - } - if (!insideBrackets) { - result++; - } else if (i + 6 < index && message.Substring(i, 6) == "sprite") { - result++; - } - } - return result; - } - } - public struct DialogueCommand { - public int position; - public DialogueCommandType type; - public float floatValue; - public string stringValue; - public TextAnimationType textAnimValue; - } - - public enum DialogueCommandType { - Pause, - TextSpeedChange, - AnimStart, - AnimEnd, - Sound - } - - public enum TextAnimationType { - none, - shake, - wave, - wobble, - rainbow, - } -} \ No newline at end of file diff --git a/SimpleTools/Tools/DialogueSystem/DialogueUtility.cs.meta b/SimpleTools/Tools/DialogueSystem/DialogueUtility.cs.meta deleted file mode 100644 index a98dbdc..0000000 --- a/SimpleTools/Tools/DialogueSystem/DialogueUtility.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d4649243ed65dff45b7891eed22eb4c6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/DialogueSystem/DialogueVertexAnimator.cs b/SimpleTools/Tools/DialogueSystem/DialogueVertexAnimator.cs deleted file mode 100644 index 24eb6e4..0000000 --- a/SimpleTools/Tools/DialogueSystem/DialogueVertexAnimator.cs +++ /dev/null @@ -1,265 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using TMPro; -using UnityEngine; - -namespace SimpleTools.DialogueSystem { - public class DialogueVertexAnimator { - public bool textAnimating = false; - bool stopAnimating = false; - - readonly TMP_Text textBox; - string[] audioSourceGroup; - public void SetAudioSourceGroup(params string[] _audioSourceGroup) { - audioSourceGroup = _audioSourceGroup; - } - public DialogueVertexAnimator(TMP_Text _textBox) { - textBox = _textBox; - } - - static readonly Color32 clear = new Color32(0, 0, 0, 0); - const float CHAR_ANIM_TIME = 0.07f; - static readonly Vector3 vecZero = Vector3.zero; - public IEnumerator AnimateTextIn(List commands, string processedMessage, Action onFinish) { - textAnimating = true; - float secondsPerCharacter = 1f / 150f; - float timeOfLastCharacter = 0; - - TextAnimInfo[] textAnimInfo = SeparateOutTextAnimInfo(commands); - TMP_TextInfo textInfo = textBox.textInfo; - for (int i = 0; i < textInfo.meshInfo.Length; i++) { - TMP_MeshInfo meshInfer = textInfo.meshInfo[i]; - if (meshInfer.vertices != null) { - for (int j = 0; j < meshInfer.vertices.Length; j++) { - meshInfer.vertices[j] = vecZero; - } - } - } - - textBox.text = processedMessage; - textBox.ForceMeshUpdate(); - - TMP_MeshInfo[] cachedMeshInfo = textInfo.CopyMeshInfoVertexData(); - Color32[][] originalColors = new Color32[textInfo.meshInfo.Length][]; - for (int i = 0; i < originalColors.Length; i++) { - Color32[] theColors = textInfo.meshInfo[i].colors32; - originalColors[i] = new Color32[theColors.Length]; - Array.Copy(theColors, originalColors[i], theColors.Length); - } - int charCount = textInfo.characterCount; - float[] charAnimStartTimes = new float[charCount]; - for (int i = 0; i < charCount; i++) { - charAnimStartTimes[i] = -1; - } - int visableCharacterIndex = 0; - while (true) { - if (stopAnimating) { - for (int i = visableCharacterIndex; i < charCount; i++) { - charAnimStartTimes[i] = Time.unscaledTime; - } - visableCharacterIndex = charCount; - FinishAnimating(onFinish); - } - if (ShouldShowNextCharacter(secondsPerCharacter, timeOfLastCharacter)) { - if (visableCharacterIndex <= charCount) { - ExecuteCommandsForCurrentIndex(commands, visableCharacterIndex, ref secondsPerCharacter, ref timeOfLastCharacter); - if (visableCharacterIndex < charCount && ShouldShowNextCharacter(secondsPerCharacter, timeOfLastCharacter)) { - charAnimStartTimes[visableCharacterIndex] = Time.unscaledTime; - PlayDialogueSound(); - visableCharacterIndex++; - timeOfLastCharacter = Time.unscaledTime; - if (visableCharacterIndex == charCount) { - FinishAnimating(onFinish); - } - } - } - } - for (int j = 0; j < charCount; j++) { - TMP_CharacterInfo charInfo = textInfo.characterInfo[j]; - if (charInfo.isVisible) { - int vertexIndex = charInfo.vertexIndex; - int materialIndex = charInfo.materialReferenceIndex; - Color32[] destinationColors = textInfo.meshInfo[materialIndex].colors32; - Color32 theColor = j < visableCharacterIndex ? originalColors[materialIndex][vertexIndex] : clear; - destinationColors[vertexIndex + 0] = theColor; - destinationColors[vertexIndex + 1] = theColor; - destinationColors[vertexIndex + 2] = theColor; - destinationColors[vertexIndex + 3] = theColor; - - Vector3[] sourceVertices = cachedMeshInfo[materialIndex].vertices; - Vector3[] destinationVertices = textInfo.meshInfo[materialIndex].vertices; - float charSize = 0; - float charAnimStartTime = charAnimStartTimes[j]; - if (charAnimStartTime >= 0) { - float timeSinceAnimStart = Time.unscaledTime - charAnimStartTime; - charSize = Mathf.Min(1, timeSinceAnimStart / CHAR_ANIM_TIME); - } - - Vector3 animPosAdjustment = GetAnimPosAdjustment(textAnimInfo, j, textBox.fontSize, Time.unscaledTime); - Vector3 offset = (sourceVertices[vertexIndex + 0] + sourceVertices[vertexIndex + 2]) / 2; - destinationVertices[vertexIndex + 0] = ((sourceVertices[vertexIndex + 0] - offset) * charSize) + offset + animPosAdjustment; - destinationVertices[vertexIndex + 1] = ((sourceVertices[vertexIndex + 1] - offset) * charSize) + offset + animPosAdjustment; - destinationVertices[vertexIndex + 2] = ((sourceVertices[vertexIndex + 2] - offset) * charSize) + offset + animPosAdjustment; - destinationVertices[vertexIndex + 3] = ((sourceVertices[vertexIndex + 3] - offset) * charSize) + offset + animPosAdjustment; - for (int i = 0; i < 4; i++) { - Vector3 animVertexAdjustment = GetAnimVertexAdjustment(textAnimInfo, j, textBox.fontSize, Time.unscaledTime + i); - destinationVertices[vertexIndex + i] += animVertexAdjustment; - - Color animColorAdjustment = GetAnimColorAdjustment(textAnimInfo, j, Time.unscaledTime + i, destinationVertices[vertexIndex + i]); - if (animColorAdjustment == Color.white) - continue; - destinationColors[vertexIndex + i] += animColorAdjustment; - } - } - } - textBox.UpdateVertexData(TMP_VertexDataUpdateFlags.Colors32); - for (int i = 0; i < textInfo.meshInfo.Length; i++) { - TMP_MeshInfo theInfo = textInfo.meshInfo[i]; - theInfo.mesh.vertices = theInfo.vertices; - textBox.UpdateGeometry(theInfo.mesh, i); - } - yield return null; - } - } - - void ExecuteCommandsForCurrentIndex(List commands, int visableCharacterIndex, ref float secondsPerCharacter, ref float timeOfLastCharacter) { - for (int i = 0; i < commands.Count; i++) { - DialogueCommand command = commands[i]; - if (command.position == visableCharacterIndex) { - switch (command.type) { - case DialogueCommandType.Pause: - timeOfLastCharacter = Time.unscaledTime + command.floatValue; - break; - case DialogueCommandType.TextSpeedChange: - secondsPerCharacter = 1f / command.floatValue; - break; - case DialogueCommandType.Sound: - AudioManager.AudioManager.instance.PlayOneShot(command.stringValue); - break; - } - commands.RemoveAt(i); - i--; - } - } - } - - void FinishAnimating(Action onFinish) { - textAnimating = false; - stopAnimating = false; - onFinish?.Invoke(); - } - - const float NOISE_MAGNITUDE_ADJUSTMENT = 0.06f; - const float NOISE_FREQUENCY_ADJUSTMENT = 15f; - const float WAVE_MAGNITUDE_ADJUSTMENT = 0.06f; - const float WOBBLE_MAGNITUDE_ADJUSTMENT = 0.5f; - const float RAINBOW_LENGTH_ADJUSTMENT = .001f; - Vector3 GetAnimPosAdjustment(TextAnimInfo[] textAnimInfo, int charIndex, float fontSize, float time) { - float x = 0; - float y = 0; - for (int i = 0; i < textAnimInfo.Length; i++) { - TextAnimInfo info = textAnimInfo[i]; - if (charIndex >= info.startIndex && charIndex < info.endIndex) { - if (info.type == TextAnimationType.shake) { - float scaleAdjust = fontSize * NOISE_MAGNITUDE_ADJUSTMENT; - x += (Mathf.PerlinNoise((charIndex + time) * NOISE_FREQUENCY_ADJUSTMENT, 0) - 0.5f) * scaleAdjust; - y += (Mathf.PerlinNoise((charIndex + time) * NOISE_FREQUENCY_ADJUSTMENT, 1000) - 0.5f) * scaleAdjust; - } else if (info.type == TextAnimationType.wave) { - y += Mathf.Sin((charIndex * 1.5f) + (time * 6)) * fontSize * WAVE_MAGNITUDE_ADJUSTMENT; - } - } - } - return new Vector3(x, y, 0); - } - - Vector3 GetAnimVertexAdjustment(TextAnimInfo[] textAnimInfo, int charIndex, float fontSize, float time) { - float x = 0; - float y = 0; - for (int i = 0; i < textAnimInfo.Length; i++) { - TextAnimInfo info = textAnimInfo[i]; - if (charIndex >= info.startIndex && charIndex < info.endIndex) { - if (info.type == TextAnimationType.wobble) { - float scaleAdjust = fontSize * NOISE_MAGNITUDE_ADJUSTMENT; - x = Mathf.Sin(time * 3.3f) * scaleAdjust * WOBBLE_MAGNITUDE_ADJUSTMENT; - y = Mathf.Cos(time * 2.5f) * scaleAdjust * WOBBLE_MAGNITUDE_ADJUSTMENT; - } - } - } - return new Vector3(x, y, 0); - } - Color GetAnimColorAdjustment(TextAnimInfo[] textAnimInfo, int charIndex, float time, Vector3 destinationVertice) { - Color color = Color.white; - for (int i = 0; i < textAnimInfo.Length; i++) { - TextAnimInfo info = textAnimInfo[i]; - if (charIndex >= info.startIndex && charIndex < info.endIndex) { - if (info.type == TextAnimationType.rainbow) { - color = Color.HSVToRGB(Mathf.Repeat((time + destinationVertice.x * RAINBOW_LENGTH_ADJUSTMENT), 1f), .6f, 1); - } - } - } - return color; - } - - static bool ShouldShowNextCharacter(float secondsPerCharacter, float timeOfLastCharacter) { - return (Time.unscaledTime - timeOfLastCharacter) > secondsPerCharacter; - } - public void SkipToEndOfCurrentMessage() { - if (textAnimating) { - stopAnimating = true; - } - } - public bool IsMessageAnimating() { - return textAnimating; - } - - float timeUntilNextDialogueSound = 0; - float lastDialogueSound = 0; - void PlayDialogueSound() { - if (Time.unscaledTime - lastDialogueSound > timeUntilNextDialogueSound) { - timeUntilNextDialogueSound = UnityEngine.Random.Range(0.02f, 0.08f); - lastDialogueSound = Time.unscaledTime; - if (audioSourceGroup[0] != string.Empty) - AudioManager.AudioManager.instance.PlayRandomSound(audioSourceGroup); - } - } - - TextAnimInfo[] SeparateOutTextAnimInfo(List commands) { - List tempResult = new List(); - List animStartCommands = new List(); - List animEndCommands = new List(); - for (int i = 0; i < commands.Count; i++) { - DialogueCommand command = commands[i]; - if (command.type == DialogueCommandType.AnimStart) { - animStartCommands.Add(command); - commands.RemoveAt(i); - i--; - } else if (command.type == DialogueCommandType.AnimEnd) { - animEndCommands.Add(command); - commands.RemoveAt(i); - i--; - } - } - if (animStartCommands.Count != animEndCommands.Count) { - Debug.LogError("Unequal number of start and end animation commands. Start Commands: " + animStartCommands.Count + " End Commands: " + animEndCommands.Count); - } else { - for (int i = 0; i < animStartCommands.Count; i++) { - DialogueCommand startCommand = animStartCommands[i]; - DialogueCommand endCommand = animEndCommands[i]; - tempResult.Add(new TextAnimInfo { - startIndex = startCommand.position, - endIndex = endCommand.position, - type = startCommand.textAnimValue - }); - } - } - return tempResult.ToArray(); - } - } - - public struct TextAnimInfo { - public int startIndex; - public int endIndex; - public TextAnimationType type; - } -} \ No newline at end of file diff --git a/SimpleTools/Tools/DialogueSystem/DialogueVertexAnimator.cs.meta b/SimpleTools/Tools/DialogueSystem/DialogueVertexAnimator.cs.meta deleted file mode 100644 index 8f15ab6..0000000 --- a/SimpleTools/Tools/DialogueSystem/DialogueVertexAnimator.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: dcef7fafd8716284392e9621424bfa6a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/Editor.meta b/SimpleTools/Tools/Editor.meta deleted file mode 100644 index 550a16f..0000000 --- a/SimpleTools/Tools/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 53d517df853ee5d44b788e900f897c54 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/Editor/Square.png b/SimpleTools/Tools/Editor/Square.png deleted file mode 100644 index 8eb1b1e..0000000 Binary files a/SimpleTools/Tools/Editor/Square.png and /dev/null differ diff --git a/SimpleTools/Tools/Editor/Square.png.meta b/SimpleTools/Tools/Editor/Square.png.meta deleted file mode 100644 index f6ffc2c..0000000 --- a/SimpleTools/Tools/Editor/Square.png.meta +++ /dev/null @@ -1,104 +0,0 @@ -fileFormatVersion: 2 -guid: d93624141d1826749b7f50e692cc2a93 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 0 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 - nPOTScale: 0 - lightmap: 0 - compressionQuality: 50 - spriteMode: 3 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 4 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 8 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: 4 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: - - - {x: -2, y: -2} - - {x: -2, y: 2} - - {x: 2, y: 2} - - {x: 2, y: -2} - physicsShape: - - - {x: -2, y: -2} - - {x: -2, y: 2} - - {x: 2, y: 2} - - {x: 2, y: -2} - bones: [] - spriteID: 5e97eb03825dee720800000000000000 - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/SimpleTools/Tools/Editor/ToolsEditor.cs b/SimpleTools/Tools/Editor/ToolsEditor.cs deleted file mode 100644 index c251913..0000000 --- a/SimpleTools/Tools/Editor/ToolsEditor.cs +++ /dev/null @@ -1,548 +0,0 @@ -#if UNITY_EDITOR -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEditor; -using UnityEngine.UI; -using TMPro; -using Cinemachine; -using UnityEngine.SceneManagement; -using UnityEditor.SceneManagement; -using UnityEngine.EventSystems; -using UnityEditor.Experimental.SceneManagement; -using System; -using SimpleTools.AudioManager; -using SimpleTools.DialogueSystem; -using SimpleTools.Cinemachine; -using SimpleTools.SceneManagement; -using SimpleTools.Menu; - -public class ToolsEditor{ - - [MenuItem("GameObject/Simple Tools/AudioManager", false, 10)] - static void CreateAudioManager(){ - GameObject audioManager = new GameObject("AudioManager"); - audioManager.AddComponent(); - } - - [MenuItem("GameObject/Simple Tools/Dialogue System", false, 10)] - static void CreateDialogueSystem(){ - GameObject dialogueCanvas = new GameObject("DialogueCanvas"); - dialogueCanvas.AddComponent(); - Canvas canvas = dialogueCanvas.AddComponent(); - canvas.renderMode = RenderMode.ScreenSpaceOverlay; - dialogueCanvas.AddComponent(); - dialogueCanvas.AddComponent(); - - GameObject text = new GameObject("DialogueText"); - text.transform.SetParent(dialogueCanvas.transform); - text.AddComponent().text = "Dialogue"; - text.GetComponent().anchoredPosition = Vector2.zero; - - GameObject name = new GameObject("NameText"); - name.transform.SetParent(dialogueCanvas.transform); - name.AddComponent().text = "Name"; - name.GetComponent().anchoredPosition = Vector2.up * 50f; - - GameObject image = new GameObject("Image"); - image.transform.SetParent(dialogueCanvas.transform); - image.AddComponent(); - image.GetComponent().anchoredPosition = new Vector2(-150f, 25f); - - DialogueManager dialogueManager = dialogueCanvas.AddComponent(); - Debug.Log(dialogueManager.dialogueItems); - dialogueManager.dialogueItems.textBox = text.GetComponent(); - dialogueManager.dialogueItems.characterName = name.GetComponent(); - dialogueManager.dialogueItems.characterImage = image.GetComponent(); - dialogueManager.dialogueItems.canvas = canvas; - //DialogueSystem dialogueSystem = dialogueCanvas.AddComponent(); - //dialogueSystem.nameText = name.GetComponent(); - //dialogueSystem.dialogue = text.GetComponent(); - //dialogueSystem.faceImage = image.GetComponent(); - //dialogueSystem.nameField = name; - } - - [MenuItem("GameObject/Simple Tools/Camera Trigger/2D", false, 10)] - static void CreateCameraTrigger2D(){ - GameObject cameraTrigger = new GameObject("CameraTrigger2D"); - cameraTrigger.AddComponent(); - cameraTrigger.AddComponent(); - - GameObject vCam = new GameObject("CM vcam1"); - vCam.transform.SetParent(cameraTrigger.transform); - vCam.SetActive(false); - CinemachineVirtualCamera cam = vCam.AddComponent(); - cam.m_Lens.Orthographic = true; - } - - [MenuItem("GameObject/Simple Tools/Camera Trigger/3D", false, 10)] - static void CreateCameraTrigger3D(){ - GameObject cameraTrigger = new GameObject("CameraTrigger3D"); - cameraTrigger.AddComponent(); - cameraTrigger.AddComponent(); - - GameObject vCam = new GameObject("CM vcam1"); - vCam.transform.SetParent(cameraTrigger.transform); - vCam.SetActive(false); - CinemachineVirtualCamera cam = vCam.AddComponent(); - cam.m_Lens.FieldOfView = 60f; - } - -#if CINEMACHINE_271_OR_NEWER - [MenuItem("GameObject/Simple Tools/ScreenShake Camera/2D", false, 10)] - static void CreateScreenShakeCamera2d(){ - GameObject screenShakeCamera = new GameObject("ScreenShakeCamera"); - CinemachineVirtualCamera vCam = screenShakeCamera.AddComponent(); - vCam.m_Lens.ModeOverride = LensSettings.OverrideModes.Orthographic; - - CinemachineBasicMultiChannelPerlin shake = vCam.AddCinemachineComponent(); - - NoiseSettings noise = (NoiseSettings)AssetDatabase.LoadAssetAtPath("Packages/com.unity.cinemachine/Presets/Noise/6D Shake.asset", typeof(NoiseSettings)); - - shake.m_NoiseProfile = noise; - shake.m_AmplitudeGain = 0f; - shake.m_FrequencyGain = 1f; - } - [MenuItem("GameObject/Simple Tools/ScreenShake Camera/3D", false, 10)] - static void CreateScreenShakeCamera3d(){ - GameObject screenShakeCamera = new GameObject("ScreenShakeCamera"); - CinemachineVirtualCamera vCam = screenShakeCamera.AddComponent(); - vCam.m_Lens.ModeOverride = LensSettings.OverrideModes.Perspective; - - CinemachineBasicMultiChannelPerlin shake = vCam.AddCinemachineComponent(); - - NoiseSettings noise = (NoiseSettings)AssetDatabase.LoadAssetAtPath("Packages/com.unity.cinemachine/Presets/Noise/6D Shake.asset", typeof(NoiseSettings)); - - shake.m_NoiseProfile = noise; - shake.m_AmplitudeGain = 0f; - shake.m_FrequencyGain = 1f; - } -#else - [MenuItem("GameObject/Simple Tools/ScreenShake Camera", false, 10)] - static void CreateScreenShakeCamera2d(){ - GameObject screenShakeCamera = new GameObject("ScreenShakeCamera"); - CinemachineVirtualCamera vCam = screenShakeCamera.AddComponent(); - - CinemachineBasicMultiChannelPerlin shake = vCam.AddCinemachineComponent(); - - NoiseSettings noise = (NoiseSettings)AssetDatabase.LoadAssetAtPath("Packages/com.unity.cinemachine/Presets/Noise/6D Shake.asset", typeof(NoiseSettings)); - - shake.m_NoiseProfile = noise; - shake.m_AmplitudeGain = 0f; - shake.m_FrequencyGain = 1f; - } -#endif - - [MenuItem("Assets/Create/Simple Tools/Create Loading Scene")] - [MenuItem("Simple Tools/Create Loading Scene")] - static void CreateLoadingScene(){ - EditorSceneManager.SaveOpenScenes(); - - Scene loadingScene = EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects); - loadingScene.name = "Loading"; - - GameObject loaderCallback = new GameObject("LoaderCallback"); - loaderCallback.AddComponent(); - - GameObject canvasObj = new GameObject("Canvas"); - Canvas canvas = canvasObj.AddComponent(); - canvas.renderMode = RenderMode.ScreenSpaceOverlay; - - CanvasScaler canvasScaler = canvasObj.AddComponent(); - canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; - canvasScaler.referenceResolution = new Vector2Int(951, 535); - canvasScaler.matchWidthOrHeight = 1f; - - canvasObj.AddComponent(); - - TextMeshProUGUI loadingText = new GameObject("LoadingText").AddComponent(); - loadingText.transform.SetParent(canvasObj.transform); - RectTransform loadingTextTransform = loadingText.GetComponent(); - loadingTextTransform.anchoredPosition = new Vector2Int(-333, -212); - loadingTextTransform.sizeDelta = new Vector2Int(237, 52); - loadingText.text = "LOADING..."; - - Image bg = new GameObject("bg").AddComponent(); - bg.transform.SetParent(canvasObj.transform); - RectTransform bgTransform = bg.GetComponent(); - bgTransform.anchoredPosition = new Vector2Int(0, -235); - bgTransform.sizeDelta = new Vector2Int(900, 20); - bg.color = new Color(36f / 255f, 36f / 255f, 36f / 255f); - - Image progressBar = new GameObject("ProgressBar").AddComponent(); - progressBar.transform.SetParent(bg.transform); - RectTransform progressBarTransform = progressBar.GetComponent(); - progressBarTransform.anchoredPosition = Vector2.zero; - progressBarTransform.sizeDelta = new Vector2Int(900, 20); - - progressBar.sprite = (Sprite)AssetDatabase.LoadAssetAtPath("Packages/com.geri.simpletools/Simple Tools/Editor/Square.png", typeof(Sprite)); - progressBar.type = Image.Type.Filled; - progressBar.fillMethod = Image.FillMethod.Horizontal; - progressBar.fillOrigin = (int)Image.OriginHorizontal.Left; - progressBar.fillAmount = 1f; - progressBar.gameObject.AddComponent(); - } - -#if UNITY_2019_3_OR_NEWER - [MenuItem("Assets/Create/Simple Tools/Create Menu Scene")] - [MenuItem("Simple Tools/Create Menu Scene")] - static void CreateMenuScene(){ - EditorSceneManager.SaveOpenScenes(); - - Scene menuScene = EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects); - menuScene.name = "Menu"; - - GameObject canvasObj = new GameObject("Canvas"); - Canvas canvas = canvasObj.AddComponent(); - canvas.renderMode = RenderMode.ScreenSpaceOverlay; - - CreateEventSystem(false, null); - - CanvasScaler canvasScaler = canvasObj.AddComponent(); - canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; - canvasScaler.referenceResolution = new Vector2Int(951, 535); - canvasScaler.matchWidthOrHeight = 1f; - - canvasObj.AddComponent(); - - GameObject qualityDropdown = TMP_DefaultControls.CreateDropdown(GetStandardResources()); - qualityDropdown.transform.SetParent(canvasObj.transform); - RectTransform qualityRectTransform = qualityDropdown.GetComponent(); - qualityRectTransform.anchoredPosition = Vector2.up * 15f; - qualityDropdown.name = "QualityDropdown"; - - GameObject resolutionDropdown = TMP_DefaultControls.CreateDropdown(GetStandardResources()); - resolutionDropdown.transform.SetParent(canvasObj.transform); - RectTransform resolutionRectTransform = resolutionDropdown.GetComponent(); - resolutionRectTransform.anchoredPosition = Vector2.down * 15f; - resolutionDropdown.name = "ResolutionDropdown"; - - GameObject musicSlider; - using (new FactorySwapToEditor()) - musicSlider = DefaultControls.CreateSlider(GetStandardUIResources()); - musicSlider.transform.SetParent(canvasObj.transform); - RectTransform musicRectTransform = musicSlider.GetComponent(); - musicRectTransform.anchoredPosition = Vector2.down * 40f; - musicSlider.name = "MusicSlider"; - - GameObject sfxSlider; - using (new FactorySwapToEditor()) - sfxSlider = DefaultControls.CreateSlider(GetStandardUIResources()); - sfxSlider.transform.SetParent(canvasObj.transform); - RectTransform sfxRectTransform = sfxSlider.GetComponent(); - sfxRectTransform.anchoredPosition = Vector2.down * 60; - sfxSlider.name = "MusicSlider"; - - GameObject playButton = TMP_DefaultControls.CreateButton(GetStandardResources()); - playButton.transform.SetParent(canvasObj.transform); - TMP_Text playTextComponent = playButton.GetComponentInChildren(); - playTextComponent.fontSize = 24; - playTextComponent.text = "PLAY"; - RectTransform playRectTransform = playButton.GetComponent(); - playRectTransform.anchoredPosition = Vector2.up * 45f; - playButton.name = "PlayButton"; - - GameObject quitButton = TMP_DefaultControls.CreateButton(GetStandardResources()); - quitButton.transform.SetParent(canvasObj.transform); - TMP_Text quitTextComponent = quitButton.GetComponentInChildren(); - quitTextComponent.fontSize = 24; - quitTextComponent.text = "QUIT"; - RectTransform quitRectTransform = quitButton.GetComponent(); - quitRectTransform.anchoredPosition = Vector2.down * 85f; - quitButton.name = "QuitButton"; - - MenuController menuController = canvasObj.AddComponent(); - Slider sliderMusic = menuController.musicSlider = musicSlider.GetComponent(); - Slider sliderSfx = menuController.sfxSlider = sfxSlider.GetComponent(); - TMP_Dropdown dropdownQuality = menuController.qualityDropdown = qualityDropdown.GetComponent(); - TMP_Dropdown dropdownResolution = menuController.resolutionDropdown = resolutionDropdown.GetComponent(); - - sliderMusic.onValueChanged.AddListener(menuController.SetMusicVolume); - sliderSfx.onValueChanged.AddListener(menuController.SetSfxVolume); - dropdownQuality.onValueChanged.AddListener(menuController.SetQuality); - dropdownResolution.onValueChanged.AddListener(menuController.SetResolution); - - playButton.GetComponent