├── .gitignore ├── .vscode └── settings.json ├── Assets ├── Capture2Device.meta └── Capture2Device │ ├── Editor.meta │ └── Editor │ ├── Core.meta │ ├── Core │ ├── Capture2Device.cs │ ├── Capture2Device.cs.meta │ ├── Capture2DeviceSetting.cs │ └── Capture2DeviceSetting.cs.meta │ ├── Resources.meta │ ├── Resources │ ├── C2D Setting.asset │ └── C2D Setting.asset.meta │ ├── Utility.meta │ └── Utility │ ├── DiscordHelper.cs │ ├── DiscordHelper.cs.meta │ ├── EditorCoroutineExtensions.cs │ ├── EditorCoroutineExtensions.cs.meta │ ├── EditorCoroutines.cs │ ├── EditorCoroutines.cs.meta │ ├── SlackHelper.cs │ ├── SlackHelper.cs.meta │ ├── TelegramHelper.cs │ └── TelegramHelper.cs.meta ├── LICENSE ├── Logo.png ├── Logs └── Packages-Update.log ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── XRSettings.asset ├── README.md └── fig-1.png /.gitignore: -------------------------------------------------------------------------------- 1 | /[Ll]ibrary/ 2 | /[Tt]emp/ 3 | /[Oo]bj/ 4 | /[Bb]uild/ 5 | /[Bb]uilds/ 6 | /Assets/AssetStoreTools* 7 | 8 | # Visual Studio 2015 cache directory 9 | /.vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | 26 | # Unity3D generated meta files 27 | *.pidb.meta 28 | 29 | # Unity3D Generated File On Crash Reports 30 | sysinfo.txt 31 | 32 | # Builds 33 | *.apk 34 | *.unitypackage 35 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": 3 | { 4 | "**/.DS_Store":true, 5 | "**/.git":true, 6 | "**/.gitignore":true, 7 | "**/.gitmodules":true, 8 | "**/*.booproj":true, 9 | "**/*.pidb":true, 10 | "**/*.suo":true, 11 | "**/*.user":true, 12 | "**/*.userprefs":true, 13 | "**/*.unityproj":true, 14 | "**/*.dll":true, 15 | "**/*.exe":true, 16 | "**/*.pdf":true, 17 | "**/*.mid":true, 18 | "**/*.midi":true, 19 | "**/*.wav":true, 20 | "**/*.gif":true, 21 | "**/*.ico":true, 22 | "**/*.jpg":true, 23 | "**/*.jpeg":true, 24 | "**/*.png":true, 25 | "**/*.psd":true, 26 | "**/*.tga":true, 27 | "**/*.tif":true, 28 | "**/*.tiff":true, 29 | "**/*.3ds":true, 30 | "**/*.3DS":true, 31 | "**/*.fbx":true, 32 | "**/*.FBX":true, 33 | "**/*.lxo":true, 34 | "**/*.LXO":true, 35 | "**/*.ma":true, 36 | "**/*.MA":true, 37 | "**/*.obj":true, 38 | "**/*.OBJ":true, 39 | "**/*.asset":true, 40 | "**/*.cubemap":true, 41 | "**/*.flare":true, 42 | "**/*.mat":true, 43 | "**/*.meta":true, 44 | "**/*.prefab":true, 45 | "**/*.unity":true, 46 | "build/":true, 47 | "Build/":true, 48 | "Library/":true, 49 | "library/":true, 50 | "obj/":true, 51 | "Obj/":true, 52 | "ProjectSettings/":true, 53 | "temp/":true, 54 | "Temp/":true 55 | } 56 | } -------------------------------------------------------------------------------- /Assets/Capture2Device.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 04df1827beae3364987fa585f456e552 3 | folderAsset: yes 4 | timeCreated: 1511109938 5 | licenseType: Free 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e364e9fa69b81554cb8fb60b4a09e723 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Core.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f4a1e45b8304d3d4c8b88f1a9c7f6f0b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Core/Capture2Device.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using UnityEngine; 4 | using UnityEditor; 5 | 6 | using EditorCoroutines; 7 | using SlackHelper; 8 | using TelegramHelper; 9 | using DiscordHelper; 10 | 11 | namespace OrcaAssist { 12 | 13 | public class Capture2Device { 14 | 15 | private const string LogTag = "[Capture to Device] {0}"; 16 | 17 | private static string _fileName = string.Empty; 18 | private static string filePath = string.Empty; 19 | private Texture2D _screenshot = null; 20 | 21 | private static Capture2Device _instance = null; 22 | public static Capture2Device Instance { 23 | get { return _instance ?? (_instance = new Capture2Device()); } 24 | } 25 | 26 | public Capture2DeviceSetting SettingData { 27 | get { 28 | return Capture2DeviceSetting.InstanceC2D; 29 | } 30 | } 31 | 32 | [MenuItem("OrcaAssist/Capture 2 Device/to Slack", false, 100)] 33 | public static void ToSlack() { 34 | 35 | EditorCoroutines.EditorCoroutines.StartCoroutine(Instance.CaptureToSlack(), Instance); 36 | } 37 | 38 | private IEnumerator CaptureToSlack() { 39 | 40 | if(!SettingData.IsCompletedSlackData()) yield break; 41 | 42 | _fileName = DateTime.Now.ToString("yyyyMMddHHmmss"); 43 | filePath = $"{SettingData.BackupPath}/{_fileName}.png"; 44 | 45 | yield return EditorCoroutines.EditorCoroutines.StartCoroutine(CaptureGameView(filePath), this); 46 | 47 | var uploadData = new SlackHelper.UploadData { 48 | Token = SettingData.SlackToken, 49 | Title = SettingData.SlackTitle, 50 | InitialComment = SettingData.SlackComment, 51 | Filename = _fileName, 52 | Channels = SettingData.SlackChannelName, 53 | }; 54 | 55 | _screenshot = new Texture2D(1, 1); 56 | byte[] bytes = System.IO.File.ReadAllBytes(filePath); 57 | _screenshot.LoadImage(bytes); 58 | uploadData.ScreenShot = _screenshot; 59 | 60 | yield return EditorCoroutines.EditorCoroutines.StartCoroutine(SlackHelper.SlackHelper.UploadScreenShot(uploadData, OnSuccess, OnError), this); 61 | } 62 | 63 | [MenuItem("OrcaAssist/Capture 2 Device/to Telegram", false, 101)] 64 | public static void ToTelegram() { 65 | 66 | EditorCoroutines.EditorCoroutines.StartCoroutine(Instance.CaptureToTelegram(), Instance); 67 | } 68 | 69 | private IEnumerator CaptureToTelegram() { 70 | 71 | if(!SettingData.IsCompletedTelegaramData()) yield break; 72 | 73 | _fileName = DateTime.Now.ToString("yyyyMMddHHmmss"); 74 | filePath = $"{SettingData.BackupPath}/{_fileName}.png"; 75 | 76 | yield return EditorCoroutines.EditorCoroutines.StartCoroutine(CaptureGameView(filePath), this); 77 | 78 | var uploadData = new TelegramHelper.UploadData { 79 | Token = SettingData.TelegramToken, 80 | FileName = _fileName, 81 | ChatId = SettingData.TelegramToken, 82 | }; 83 | 84 | _screenshot = new Texture2D(1, 1); 85 | byte[] bytes = System.IO.File.ReadAllBytes(filePath); 86 | _screenshot.LoadImage(bytes); 87 | uploadData.ScreenShot = _screenshot; 88 | 89 | yield return EditorCoroutines.EditorCoroutines.StartCoroutine(TelegramHelper.TelegramHelper.UploadScreenShot(uploadData, OnSuccess, OnError), this); 90 | } 91 | 92 | [MenuItem("OrcaAssist/Capture 2 Device/to Discord", false, 102)] 93 | public static void ToDiscord() { 94 | 95 | EditorCoroutines.EditorCoroutines.StartCoroutine(Instance.CaptureToDiscord(), Instance); 96 | } 97 | 98 | private IEnumerator CaptureToDiscord() { 99 | 100 | if(!SettingData.IsCompletedDiscordData()) yield break; 101 | 102 | _fileName = DateTime.Now.ToString("yyyyMMddHHmmss"); 103 | filePath = $"{SettingData.BackupPath}/{_fileName}.png"; 104 | 105 | yield return EditorCoroutines.EditorCoroutines.StartCoroutine(CaptureGameView(filePath), this); 106 | 107 | var uploadData = new DiscordHelper.UploadData { 108 | webHookId = SettingData.DiscordWebhookId, 109 | Token = SettingData.DiscordToken, 110 | FileName = _fileName 111 | }; 112 | 113 | _screenshot = new Texture2D(1, 1); 114 | byte[] bytes = System.IO.File.ReadAllBytes(filePath); 115 | _screenshot.LoadImage(bytes); 116 | uploadData.ScreenShot = _screenshot; 117 | 118 | yield return EditorCoroutines.EditorCoroutines.StartCoroutine(DiscordHelper.DiscordHelper.UploadScreenShot(uploadData, OnSuccess, OnError), this); 119 | } 120 | 121 | 122 | [MenuItem("OrcaAssist/Capture 2 Device/Setting", false, 200)] 123 | public static void FocusSettingFile() { 124 | EditorGUIUtility.PingObject(Instance.SettingData); 125 | } 126 | 127 | 128 | private static IEnumerator CaptureGameView(string filePath) { 129 | 130 | // 1. Caputre Game View 131 | #if UNITY_2017_1_OR_NEWER 132 | ScreenCapture.CaptureScreenshot(filePath); 133 | #else 134 | Application.CaptureScreenshot(filePath); 135 | #endif 136 | Debug.Log(string.Format(LogTag, "Export scrennshot at " + filePath)); 137 | 138 | // 2. Wait file write complete 139 | while(true) { 140 | if(System.IO.File.Exists(filePath)) { 141 | break; 142 | } 143 | else { 144 | yield return new WaitForSeconds(0.5f); 145 | } 146 | } 147 | 148 | AssetDatabase.Refresh(); 149 | 150 | yield return null; 151 | } 152 | 153 | private static void OnSuccess() { 154 | Debug.Log(string.Format(LogTag, "Upload Success!! Check your slack")); 155 | } 156 | 157 | private static void OnError(string e) { 158 | Debug.LogError(string.Format(LogTag, "Upload FAIL!! Error message is... " + e)); 159 | } 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Core/Capture2Device.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 97e317dead343e6449f95664d319f1c8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Core/Capture2DeviceSetting.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using UnityEngine; 3 | using UnityEditor; 4 | 5 | namespace OrcaAssist { 6 | 7 | // Capture to Slack plugin setting singleton 8 | public class Capture2DeviceSetting : ScriptableObject { 9 | 10 | private const string LogTag = "[C2D Setting] {0}"; 11 | 12 | [Header("Editor Setting")] 13 | public string BackupPath; 14 | 15 | [Header("Slack Setting")] 16 | public string SlackToken; 17 | public string SlackTitle; 18 | public string SlackChannelName; 19 | public string SlackComment; 20 | 21 | [Header("Telegram Setting")] 22 | public string TelegramToken; 23 | public string TelegramChatId; 24 | 25 | [Header("Discord Setting")] 26 | public string DiscordWebhookId; 27 | public string DiscordToken; 28 | public string DiscordChatId; 29 | 30 | [MenuItem("Assets/OrcaAssist/Set C2D Backup Path", false, 1101)] 31 | private static void SetBackupPath() { 32 | string selectionPath = AssetDatabase.GetAssetPath(Selection.activeObject); 33 | string fullPath = Application.dataPath + "/" + selectionPath.Replace("Assets/", ""); 34 | InstanceC2D.BackupPath = fullPath; 35 | } 36 | 37 | [MenuItem("Assets/OrcaAssist/Set C2D Backup Path", true)] 38 | private static bool CheckMenu() { 39 | 40 | if(Selection.objects.Length > 1) { 41 | return false; 42 | } 43 | 44 | string selectionPath = AssetDatabase.GetAssetPath(Selection.activeObject); 45 | if(selectionPath.Length == 0) { 46 | return false; 47 | } 48 | 49 | string fullPath = Application.dataPath + "/" + selectionPath.Replace("Assets/", ""); 50 | FileAttributes fileAttr = File.GetAttributes(fullPath); 51 | 52 | return (fileAttr & FileAttributes.Directory) == FileAttributes.Directory; 53 | } 54 | 55 | public bool IsCompletedSlackData() { 56 | bool ret = true; 57 | 58 | if(string.IsNullOrEmpty(SlackToken)) { 59 | ret = false; 60 | Debug.LogError($"{LogTag} Slack Token is NULL or Empty!"); 61 | } 62 | 63 | if(!Directory.Exists(BackupPath)) { 64 | ret = false; 65 | Debug.LogError($"{LogTag} Backup Path is Not Exists. Please write correct path!"); 66 | } 67 | 68 | if(string.IsNullOrEmpty(SlackChannelName)) { 69 | ret = false; 70 | Debug.LogError($"{LogTag} Channel Name is NULL or Empty!"); 71 | } 72 | 73 | return ret; 74 | } 75 | 76 | public bool IsCompletedTelegaramData() { 77 | bool ret = true; 78 | 79 | if(string.IsNullOrEmpty(TelegramToken)) { 80 | ret = false; 81 | Debug.LogError($"{LogTag} Telegram Token is NULL or Empty!"); 82 | } 83 | 84 | if(!Directory.Exists(BackupPath)) { 85 | ret = false; 86 | Debug.LogError($"{LogTag} Backup Path is Not Exists. Please write correct path!"); 87 | } 88 | 89 | if(string.IsNullOrEmpty(TelegramChatId)) { 90 | ret = false; 91 | Debug.LogError($"{LogTag} Chat ID is NULL or Empty!"); 92 | } 93 | 94 | return ret; 95 | } 96 | 97 | public bool IsCompletedDiscordData() { 98 | bool ret = true; 99 | 100 | if(string.IsNullOrEmpty(DiscordToken)) { 101 | ret = false; 102 | Debug.LogError($"{LogTag} Discord Token is NULL or Empty!"); 103 | } 104 | 105 | if(string.IsNullOrEmpty(DiscordWebhookId)) { 106 | ret = false; 107 | Debug.LogError($"{LogTag} Discord Webhook Id is NULL or Empty!"); 108 | } 109 | 110 | if(!Directory.Exists(BackupPath)) { 111 | ret = false; 112 | Debug.LogError($"{LogTag} Backup Path is Not Exists. Please write correct path!"); 113 | } 114 | 115 | return ret; 116 | } 117 | 118 | // Singleton Pattern 119 | private static Capture2DeviceSetting _instance = null; 120 | public static Capture2DeviceSetting InstanceC2D { 121 | get { 122 | if(!_instance) { 123 | _instance = Resources.Load("C2D Setting") as Capture2DeviceSetting; 124 | } 125 | return _instance; 126 | } 127 | } 128 | } 129 | 130 | [CustomEditor(typeof(Capture2DeviceSetting))] 131 | public class Capture2SlackSettingEditor : Editor { 132 | public override void OnInspectorGUI() { 133 | base.OnInspectorGUI(); 134 | EditorGUILayout.Space(); 135 | if(GUILayout.Button("Open Slack API Site")) { 136 | Application.OpenURL("https://api.slack.com/apps"); 137 | } 138 | } 139 | } 140 | } -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Core/Capture2DeviceSetting.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 28f7e90d0d5b1a148a62212acd8ab274 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f7213f5c9f821f745abb801a45e984e9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Resources/C2D Setting.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 28f7e90d0d5b1a148a62212acd8ab274, type: 3} 13 | m_Name: C2D Setting 14 | m_EditorClassIdentifier: 15 | BackupPath: 16 | SlackToken: 17 | SlackTitle: 18 | SlackChannelName: 19 | SlackComment: 20 | TelegramToken: 21 | TelegramChatId: 22 | DiscordWebhookId: 23 | DiscordToken: 24 | DiscordChatId: 25 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Resources/C2D Setting.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 595c604ec5b67074b963f6058cdc09b2 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d4ccaac6a0ce584d82fd0e947a0d5ab 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/DiscordHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | using UnityEngine.Networking; 6 | 7 | namespace DiscordHelper { 8 | 9 | [Serializable] 10 | public class UploadData { 11 | public string webHookId = string.Empty; 12 | public string Token = string.Empty; 13 | public string FileName = string.Empty; 14 | public Texture2D ScreenShot = null; 15 | } 16 | 17 | public static class DiscordHelper { 18 | 19 | private static string apiUrl = "https://discordapp.com/api/webhooks"; 20 | 21 | public static IEnumerator UploadScreenShot(UploadData data, Action onSuccess = null, Action onError = null) { 22 | 23 | yield return new WaitForSeconds(0.1f); 24 | 25 | List formData = new List(); 26 | byte[] contents = data.ScreenShot.EncodeToPNG(); 27 | 28 | formData.Add( new MultipartFormFileSection("file", contents, data.FileName+".png", "image/png") ); 29 | 30 | UnityWebRequest www = UnityWebRequest.Post($"{apiUrl}/{data.webHookId}/{data.Token}", formData); 31 | 32 | yield return www.SendWebRequest(); 33 | string error = www.error; 34 | 35 | if(!string.IsNullOrEmpty(error)) { 36 | if(onError != null) { 37 | onError(error); 38 | } 39 | yield break; 40 | } 41 | 42 | if(onSuccess != null) { 43 | onSuccess(); 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/DiscordHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27b34f0fd51a946829c5679b174156de 3 | timeCreated: 1511114148 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/EditorCoroutineExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEditor; 3 | 4 | namespace EditorCoroutines 5 | { 6 | public static class EditorCoroutineExtensions 7 | { 8 | public static EditorCoroutines.EditorCoroutine StartCoroutine(this EditorWindow thisRef, IEnumerator coroutine) 9 | { 10 | return EditorCoroutines.StartCoroutine(coroutine, thisRef); 11 | } 12 | 13 | public static EditorCoroutines.EditorCoroutine StartCoroutine(this EditorWindow thisRef, string methodName) 14 | { 15 | return EditorCoroutines.StartCoroutine(methodName, thisRef); 16 | } 17 | 18 | public static EditorCoroutines.EditorCoroutine StartCoroutine(this EditorWindow thisRef, string methodName, object value) 19 | { 20 | return EditorCoroutines.StartCoroutine(methodName, value, thisRef); 21 | } 22 | 23 | public static void StopCoroutine(this EditorWindow thisRef, IEnumerator coroutine) 24 | { 25 | EditorCoroutines.StopCoroutine(coroutine, thisRef); 26 | } 27 | 28 | public static void StopCoroutine(this EditorWindow thisRef, string methodName) 29 | { 30 | EditorCoroutines.StopCoroutine(methodName, thisRef); 31 | } 32 | 33 | public static void StopAllCoroutines(this EditorWindow thisRef) 34 | { 35 | EditorCoroutines.StopAllCoroutines(thisRef); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/EditorCoroutineExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 95b768ffdf1ab014dbe006683b8e190d 3 | MonoImporter: 4 | serializedVersion: 2 5 | defaultReferences: [] 6 | executionOrder: 0 7 | icon: {instanceID: 0} 8 | userData: 9 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/EditorCoroutines.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Networking; 3 | using System.Collections; 4 | using UnityEditor; 5 | using System.Collections.Generic; 6 | using System; 7 | using System.Reflection; 8 | 9 | namespace EditorCoroutines 10 | { 11 | public class EditorCoroutines 12 | { 13 | public class EditorCoroutine 14 | { 15 | public ICoroutineYield currentYield = new YieldDefault(); 16 | public IEnumerator routine; 17 | public string routineUniqueHash; 18 | public string ownerUniqueHash; 19 | public string MethodName = ""; 20 | 21 | public int ownerHash; 22 | public string ownerType; 23 | 24 | public bool finished = false; 25 | 26 | public EditorCoroutine(IEnumerator routine, int ownerHash, string ownerType) 27 | { 28 | this.routine = routine; 29 | this.ownerHash = ownerHash; 30 | this.ownerType = ownerType; 31 | ownerUniqueHash = ownerHash + "_" + ownerType; 32 | 33 | if (routine != null) 34 | { 35 | string[] split = routine.ToString().Split('<', '>'); 36 | if (split.Length == 3) 37 | { 38 | this.MethodName = split[1]; 39 | } 40 | } 41 | 42 | routineUniqueHash = ownerHash + "_" + ownerType + "_" + MethodName; 43 | } 44 | 45 | public EditorCoroutine(string methodName, int ownerHash, string ownerType) 46 | { 47 | MethodName = methodName; 48 | this.ownerHash = ownerHash; 49 | this.ownerType = ownerType; 50 | ownerUniqueHash = ownerHash + "_" + ownerType; 51 | routineUniqueHash = ownerHash + "_" + ownerType + "_" + MethodName; 52 | } 53 | } 54 | 55 | public interface ICoroutineYield 56 | { 57 | bool IsDone(float deltaTime); 58 | } 59 | 60 | struct YieldDefault : ICoroutineYield 61 | { 62 | public bool IsDone(float deltaTime) 63 | { 64 | return true; 65 | } 66 | } 67 | 68 | struct YieldWaitForSeconds : ICoroutineYield 69 | { 70 | public float timeLeft; 71 | 72 | public bool IsDone(float deltaTime) 73 | { 74 | timeLeft -= deltaTime; 75 | return timeLeft < 0; 76 | } 77 | } 78 | 79 | struct YieldWebRequest : ICoroutineYield 80 | { 81 | public UnityWebRequest Www; 82 | 83 | public bool IsDone(float deltaTime) 84 | { 85 | return Www.isDone; 86 | } 87 | } 88 | 89 | struct YieldAsync : ICoroutineYield 90 | { 91 | public AsyncOperation asyncOperation; 92 | 93 | public bool IsDone(float deltaTime) 94 | { 95 | return asyncOperation.isDone; 96 | } 97 | } 98 | 99 | struct YieldNestedCoroutine : ICoroutineYield 100 | { 101 | public EditorCoroutine coroutine; 102 | 103 | public bool IsDone(float deltaTime) 104 | { 105 | return coroutine.finished; 106 | } 107 | } 108 | 109 | static EditorCoroutines instance = null; 110 | 111 | Dictionary> coroutineDict = new Dictionary>(); 112 | List> tempCoroutineList = new List>(); 113 | 114 | Dictionary> coroutineOwnerDict = 115 | new Dictionary>(); 116 | 117 | DateTime previousTimeSinceStartup; 118 | 119 | /// Starts a coroutine. 120 | /// The coroutine to start. 121 | /// Reference to the instance of the class containing the method. 122 | public static EditorCoroutine StartCoroutine(IEnumerator routine, object thisReference) 123 | { 124 | CreateInstanceIfNeeded(); 125 | return instance.GoStartCoroutine(routine, thisReference); 126 | } 127 | 128 | /// Starts a coroutine. 129 | /// The name of the coroutine method to start. 130 | /// Reference to the instance of the class containing the method. 131 | public static EditorCoroutine StartCoroutine(string methodName, object thisReference) 132 | { 133 | return StartCoroutine(methodName, null, thisReference); 134 | } 135 | 136 | /// Starts a coroutine. 137 | /// The name of the coroutine method to start. 138 | /// The parameter to pass to the coroutine. 139 | /// Reference to the instance of the class containing the method. 140 | public static EditorCoroutine StartCoroutine(string methodName, object value, object thisReference) 141 | { 142 | MethodInfo methodInfo = thisReference.GetType() 143 | .GetMethod(methodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); 144 | if (methodInfo == null) 145 | { 146 | Debug.LogError("Coroutine '" + methodName + "' couldn't be started, the method doesn't exist!"); 147 | } 148 | object returnValue; 149 | 150 | if (value == null) 151 | { 152 | returnValue = methodInfo.Invoke(thisReference, null); 153 | } 154 | else 155 | { 156 | returnValue = methodInfo.Invoke(thisReference, new object[] {value}); 157 | } 158 | 159 | if (returnValue is IEnumerator) 160 | { 161 | CreateInstanceIfNeeded(); 162 | return instance.GoStartCoroutine((IEnumerator) returnValue, thisReference); 163 | } 164 | else 165 | { 166 | Debug.LogError("Coroutine '" + methodName + "' couldn't be started, the method doesn't return an IEnumerator!"); 167 | } 168 | 169 | return null; 170 | } 171 | 172 | /// Stops all coroutines being the routine running on the passed instance. 173 | /// The coroutine to stop. 174 | /// Reference to the instance of the class containing the method. 175 | public static void StopCoroutine(IEnumerator routine, object thisReference) 176 | { 177 | CreateInstanceIfNeeded(); 178 | instance.GoStopCoroutine(routine, thisReference); 179 | } 180 | 181 | /// 182 | /// Stops all coroutines named methodName running on the passed instance. 183 | /// The name of the coroutine method to stop. 184 | /// Reference to the instance of the class containing the method. 185 | public static void StopCoroutine(string methodName, object thisReference) 186 | { 187 | CreateInstanceIfNeeded(); 188 | instance.GoStopCoroutine(methodName, thisReference); 189 | } 190 | 191 | /// 192 | /// Stops all coroutines running on the passed instance. 193 | /// Reference to the instance of the class containing the method. 194 | public static void StopAllCoroutines(object thisReference) 195 | { 196 | CreateInstanceIfNeeded(); 197 | instance.GoStopAllCoroutines(thisReference); 198 | } 199 | 200 | static void CreateInstanceIfNeeded() 201 | { 202 | if (instance == null) 203 | { 204 | instance = new EditorCoroutines(); 205 | instance.Initialize(); 206 | } 207 | } 208 | 209 | void Initialize() 210 | { 211 | previousTimeSinceStartup = DateTime.Now; 212 | EditorApplication.update += OnUpdate; 213 | } 214 | 215 | void GoStopCoroutine(IEnumerator routine, object thisReference) 216 | { 217 | GoStopActualRoutine(CreateCoroutine(routine, thisReference)); 218 | } 219 | 220 | void GoStopCoroutine(string methodName, object thisReference) 221 | { 222 | GoStopActualRoutine(CreateCoroutineFromString(methodName, thisReference)); 223 | } 224 | 225 | void GoStopActualRoutine(EditorCoroutine routine) 226 | { 227 | if (coroutineDict.ContainsKey(routine.routineUniqueHash)) 228 | { 229 | coroutineOwnerDict[routine.ownerUniqueHash].Remove(routine.routineUniqueHash); 230 | coroutineDict.Remove(routine.routineUniqueHash); 231 | } 232 | } 233 | 234 | void GoStopAllCoroutines(object thisReference) 235 | { 236 | EditorCoroutine coroutine = CreateCoroutine(null, thisReference); 237 | if (coroutineOwnerDict.ContainsKey(coroutine.ownerUniqueHash)) 238 | { 239 | foreach (var couple in coroutineOwnerDict[coroutine.ownerUniqueHash]) 240 | { 241 | coroutineDict.Remove(couple.Value.routineUniqueHash); 242 | } 243 | coroutineOwnerDict.Remove(coroutine.ownerUniqueHash); 244 | } 245 | } 246 | 247 | EditorCoroutine GoStartCoroutine(IEnumerator routine, object thisReference) 248 | { 249 | if (routine == null) 250 | { 251 | Debug.LogException(new Exception("IEnumerator is null!"), null); 252 | } 253 | EditorCoroutine coroutine = CreateCoroutine(routine, thisReference); 254 | GoStartCoroutine(coroutine); 255 | return coroutine; 256 | } 257 | 258 | void GoStartCoroutine(EditorCoroutine coroutine) 259 | { 260 | if (!coroutineDict.ContainsKey(coroutine.routineUniqueHash)) 261 | { 262 | List newCoroutineList = new List(); 263 | coroutineDict.Add(coroutine.routineUniqueHash, newCoroutineList); 264 | } 265 | coroutineDict[coroutine.routineUniqueHash].Add(coroutine); 266 | 267 | if (!coroutineOwnerDict.ContainsKey(coroutine.ownerUniqueHash)) 268 | { 269 | Dictionary newCoroutineDict = new Dictionary(); 270 | coroutineOwnerDict.Add(coroutine.ownerUniqueHash, newCoroutineDict); 271 | } 272 | 273 | // If the method from the same owner has been stored before, it doesn't have to be stored anymore, 274 | // One reference is enough in order for "StopAllCoroutines" to work 275 | if (!coroutineOwnerDict[coroutine.ownerUniqueHash].ContainsKey(coroutine.routineUniqueHash)) 276 | { 277 | coroutineOwnerDict[coroutine.ownerUniqueHash].Add(coroutine.routineUniqueHash, coroutine); 278 | } 279 | 280 | MoveNext(coroutine); 281 | } 282 | 283 | EditorCoroutine CreateCoroutine(IEnumerator routine, object thisReference) 284 | { 285 | return new EditorCoroutine(routine, thisReference.GetHashCode(), thisReference.GetType().ToString()); 286 | } 287 | 288 | EditorCoroutine CreateCoroutineFromString(string methodName, object thisReference) 289 | { 290 | return new EditorCoroutine(methodName, thisReference.GetHashCode(), thisReference.GetType().ToString()); 291 | } 292 | 293 | void OnUpdate() 294 | { 295 | float deltaTime = (float) (DateTime.Now.Subtract(previousTimeSinceStartup).TotalMilliseconds / 1000.0f); 296 | 297 | previousTimeSinceStartup = DateTime.Now; 298 | if (coroutineDict.Count == 0) 299 | { 300 | return; 301 | } 302 | 303 | tempCoroutineList.Clear(); 304 | foreach (var pair in coroutineDict) 305 | tempCoroutineList.Add(pair.Value); 306 | 307 | for (var i = tempCoroutineList.Count - 1; i >= 0; i--) 308 | { 309 | List coroutines = tempCoroutineList[i]; 310 | 311 | for (int j = coroutines.Count - 1; j >= 0; j--) 312 | { 313 | EditorCoroutine coroutine = coroutines[j]; 314 | 315 | if (!coroutine.currentYield.IsDone(deltaTime)) 316 | { 317 | continue; 318 | } 319 | 320 | if (!MoveNext(coroutine)) 321 | { 322 | coroutines.RemoveAt(j); 323 | coroutine.currentYield = null; 324 | coroutine.finished = true; 325 | } 326 | 327 | if (coroutines.Count == 0) 328 | { 329 | coroutineDict.Remove(coroutine.ownerUniqueHash); 330 | } 331 | } 332 | } 333 | } 334 | 335 | static bool MoveNext(EditorCoroutine coroutine) 336 | { 337 | if (coroutine.routine.MoveNext()) 338 | { 339 | return Process(coroutine); 340 | } 341 | 342 | return false; 343 | } 344 | 345 | // returns false if no next, returns true if OK 346 | static bool Process(EditorCoroutine coroutine) 347 | { 348 | object current = coroutine.routine.Current; 349 | if (current == null) 350 | { 351 | return false; 352 | } 353 | else if (current is WaitForSeconds) 354 | { 355 | float seconds = float.Parse(GetInstanceField(typeof(WaitForSeconds), current, "m_Seconds").ToString()); 356 | coroutine.currentYield = new YieldWaitForSeconds() {timeLeft = (float) seconds}; 357 | } 358 | else if (current is UnityWebRequest) 359 | { 360 | coroutine.currentYield = new YieldWebRequest {Www = (UnityWebRequest) current}; 361 | } 362 | else if (current is WaitForFixedUpdate) 363 | { 364 | coroutine.currentYield = new YieldDefault(); 365 | } 366 | else if (current is AsyncOperation) 367 | { 368 | coroutine.currentYield = new YieldAsync {asyncOperation = (AsyncOperation) current}; 369 | } 370 | else if (current is EditorCoroutine) 371 | { 372 | coroutine.currentYield = new YieldNestedCoroutine { coroutine= (EditorCoroutine) current}; 373 | } 374 | else 375 | { 376 | Debug.LogException( 377 | new Exception("<" + coroutine.MethodName + "> yielded an unknown or unsupported type! (" + current.GetType() + ")"), 378 | null); 379 | coroutine.currentYield = new YieldDefault(); 380 | } 381 | return true; 382 | } 383 | 384 | static object GetInstanceField(Type type, object instance, string fieldName) 385 | { 386 | BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static; 387 | FieldInfo field = type.GetField(fieldName, bindFlags); 388 | return field.GetValue(instance); 389 | } 390 | } 391 | } 392 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/EditorCoroutines.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cec648b627d814c59a9dfbb78414ec11 3 | timeCreated: 1509203690 4 | licenseType: Store 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/SlackHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | using UnityEngine.Networking; 6 | 7 | namespace SlackHelper { 8 | 9 | [Serializable] 10 | public class UploadData { 11 | public string Token = string.Empty; 12 | public string Filename = string.Empty; 13 | public string Title = string.Empty; 14 | public string InitialComment = string.Empty; 15 | public string Channels = string.Empty; 16 | public Texture2D ScreenShot = null; 17 | } 18 | 19 | public static class SlackHelper { 20 | 21 | private const string apiUrl = "https://slack.com/api"; 22 | 23 | public static IEnumerator UploadScreenShot(UploadData data, Action onSuccess = null, Action onError = null) { 24 | 25 | yield return new WaitForSeconds(0.1f); 26 | 27 | List formData = new List(); 28 | byte[] contents = data.ScreenShot.EncodeToPNG(); 29 | 30 | formData.Add(new MultipartFormDataSection("token", data.Token)); 31 | formData.Add(new MultipartFormDataSection("title", data.Title)); 32 | formData.Add(new MultipartFormDataSection("initial_comment", data.InitialComment)); 33 | formData.Add(new MultipartFormDataSection("channels", data.Channels)); 34 | formData.Add(new MultipartFormFileSection("file", contents, data.Filename, "image/png")); 35 | 36 | UnityWebRequest www = UnityWebRequest.Post($"{apiUrl}/files.upload", formData); 37 | 38 | yield return www.SendWebRequest();; 39 | string error = www.error; 40 | 41 | if(!string.IsNullOrEmpty(error)) { 42 | if(onError != null) { 43 | onError(error); 44 | } 45 | yield break; 46 | } 47 | 48 | if(onSuccess != null) { 49 | onSuccess(); 50 | } 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/SlackHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: adbb731fb008bea4f880150ec33db875 3 | timeCreated: 1511114148 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/TelegramHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using UnityEngine; 5 | using UnityEngine.Networking; 6 | 7 | namespace TelegramHelper { 8 | 9 | [Serializable] 10 | public class UploadData { 11 | public string Token = string.Empty; 12 | public string FileName = string.Empty; 13 | public string ChatId = string.Empty; 14 | public Texture2D ScreenShot = null; 15 | } 16 | 17 | public static class TelegramHelper { 18 | 19 | private static string BaseUrl = "https://api.telegram.org/bot"; 20 | 21 | public static IEnumerator UploadScreenShot(UploadData data, Action onSuccess = null, Action onError = null) { 22 | 23 | yield return new WaitForSeconds(0.1f); 24 | 25 | List formData = new List(); 26 | byte[] contents = data.ScreenShot.EncodeToPNG(); 27 | 28 | formData.Add(new MultipartFormDataSection("chat_id", data.ChatId)); 29 | formData.Add(new MultipartFormDataSection("caption", data.FileName)); 30 | formData.Add(new MultipartFormFileSection("photo", contents, $"{data.FileName}.png", "image/png")); 31 | 32 | UnityWebRequest www = UnityWebRequest.Post($"{BaseUrl}{data.Token}/sendPhoto", formData); 33 | 34 | yield return www.SendWebRequest(); 35 | string error = www.error; 36 | 37 | if(!string.IsNullOrEmpty(error)) { 38 | if(onError != null) { 39 | onError(error); 40 | } 41 | yield break; 42 | } 43 | 44 | if(onSuccess != null) { 45 | onSuccess(); 46 | } 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Assets/Capture2Device/Editor/Utility/TelegramHelper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 67075397b20e7074c87aca4d4f883f43 3 | timeCreated: 1511114148 4 | licenseType: Free 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Sang Hyeon 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dhfmzk/Capture-2-Device/c939eecd4de14a72ffa6676785fccbf0cc8b554d/Logo.png -------------------------------------------------------------------------------- /Logs/Packages-Update.log: -------------------------------------------------------------------------------- 1 | 2 | === Sun May 5 15:48:55 2019 3 | 4 | Packages were changed. 5 | Update Mode: updateDependencies 6 | 7 | The following packages were added: 8 | com.unity.analytics@3.3.2 9 | com.unity.purchasing@2.0.6 10 | com.unity.ads@2.0.8 11 | com.unity.textmeshpro@2.0.0 12 | com.unity.package-manager-ui@2.1.2 13 | com.unity.collab-proxy@1.2.16 14 | com.unity.timeline@1.0.0 15 | com.unity.modules.ai@1.0.0 16 | com.unity.modules.animation@1.0.0 17 | com.unity.modules.assetbundle@1.0.0 18 | com.unity.modules.audio@1.0.0 19 | com.unity.modules.cloth@1.0.0 20 | com.unity.modules.director@1.0.0 21 | com.unity.modules.imageconversion@1.0.0 22 | com.unity.modules.imgui@1.0.0 23 | com.unity.modules.jsonserialize@1.0.0 24 | com.unity.modules.particlesystem@1.0.0 25 | com.unity.modules.physics@1.0.0 26 | com.unity.modules.physics2d@1.0.0 27 | com.unity.modules.screencapture@1.0.0 28 | com.unity.modules.terrain@1.0.0 29 | com.unity.modules.terrainphysics@1.0.0 30 | com.unity.modules.tilemap@1.0.0 31 | com.unity.modules.ui@1.0.0 32 | com.unity.modules.uielements@1.0.0 33 | com.unity.modules.umbra@1.0.0 34 | com.unity.modules.unityanalytics@1.0.0 35 | com.unity.modules.unitywebrequest@1.0.0 36 | com.unity.modules.unitywebrequestassetbundle@1.0.0 37 | com.unity.modules.unitywebrequestaudio@1.0.0 38 | com.unity.modules.unitywebrequesttexture@1.0.0 39 | com.unity.modules.unitywebrequestwww@1.0.0 40 | com.unity.modules.vehicles@1.0.0 41 | com.unity.modules.video@1.0.0 42 | com.unity.modules.vr@1.0.0 43 | com.unity.modules.wind@1.0.0 44 | com.unity.modules.xr@1.0.0 45 | com.unity.multiplayer-hlapi@1.0.2 46 | com.unity.xr.legacyinputhelpers@2.0.2 47 | 48 | === Sun May 5 15:54:35 2019 49 | 50 | Packages were changed. 51 | Update Mode: resetToDefaultDependencies 52 | 53 | The following packages were removed: 54 | com.unity.multiplayer-hlapi@1.0.2 55 | com.unity.xr.legacyinputhelpers@2.0.2 56 | 57 | === Mon Dec 16 22:55:54 2019 58 | 59 | Packages were changed. 60 | Update Mode: updateDependencies 61 | 62 | The following packages were updated: 63 | com.unity.textmeshpro from version 2.0.0 to 2.0.1 64 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ads": "2.0.8", 4 | "com.unity.analytics": "3.3.2", 5 | "com.unity.collab-proxy": "1.2.16", 6 | "com.unity.package-manager-ui": "2.1.2", 7 | "com.unity.purchasing": "2.0.6", 8 | "com.unity.textmeshpro": "2.0.1", 9 | "com.unity.timeline": "1.0.0", 10 | "com.unity.modules.ai": "1.0.0", 11 | "com.unity.modules.animation": "1.0.0", 12 | "com.unity.modules.assetbundle": "1.0.0", 13 | "com.unity.modules.audio": "1.0.0", 14 | "com.unity.modules.cloth": "1.0.0", 15 | "com.unity.modules.director": "1.0.0", 16 | "com.unity.modules.imageconversion": "1.0.0", 17 | "com.unity.modules.imgui": "1.0.0", 18 | "com.unity.modules.jsonserialize": "1.0.0", 19 | "com.unity.modules.particlesystem": "1.0.0", 20 | "com.unity.modules.physics": "1.0.0", 21 | "com.unity.modules.physics2d": "1.0.0", 22 | "com.unity.modules.screencapture": "1.0.0", 23 | "com.unity.modules.terrain": "1.0.0", 24 | "com.unity.modules.terrainphysics": "1.0.0", 25 | "com.unity.modules.tilemap": "1.0.0", 26 | "com.unity.modules.ui": "1.0.0", 27 | "com.unity.modules.uielements": "1.0.0", 28 | "com.unity.modules.umbra": "1.0.0", 29 | "com.unity.modules.unityanalytics": "1.0.0", 30 | "com.unity.modules.unitywebrequest": "1.0.0", 31 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 32 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 33 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 34 | "com.unity.modules.unitywebrequestwww": "1.0.0", 35 | "com.unity.modules.vehicles": "1.0.0", 36 | "com.unity.modules.video": "1.0.0", 37 | "com.unity.modules.vr": "1.0.0", 38 | "com.unity.modules.wind": "1.0.0", 39 | "com.unity.modules.xr": "1.0.0" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 0 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_EnablePCM: 1 18 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 19 | m_AutoSimulation: 1 20 | m_AutoSyncTransforms: 1 21 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_ExternalVersionControlSupport: Hidden Meta Files 8 | m_SerializationMode: 2 9 | m_DefaultBehaviorMode: 0 10 | m_SpritePackerMode: 0 11 | m_SpritePackerPaddingPower: 1 12 | m_EtcTextureCompressorBehavior: 1 13 | m_EtcTextureFastCompressor: 1 14 | m_EtcTextureNormalCompressor: 2 15 | m_EtcTextureBestCompressor: 4 16 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd 17 | m_ProjectGenerationRootNamespace: 18 | m_UserGeneratedProjectSuffix: 19 | m_CollabEditorSettings: 20 | inProgressEnabled: 1 21 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 3 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AutoSyncTransforms: 1 28 | m_AlwaysShowColliders: 0 29 | m_ShowColliderSleep: 1 30 | m_ShowColliderContacts: 0 31 | m_ShowColliderAABB: 0 32 | m_ContactArrowScale: 0.2 33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 38 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 16 7 | productGUID: c021a88a20a4f87488276f4935ae32a9 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: Screenshot2Slack 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosAppInBackgroundBehavior: 0 56 | displayResolutionDialog: 1 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidStartInFullscreen: 1 67 | androidRenderOutsideSafeArea: 1 68 | androidBlitType: 0 69 | defaultIsNativeResolution: 1 70 | macRetinaSupport: 1 71 | runInBackground: 0 72 | captureSingleScreen: 0 73 | muteOtherAudioSources: 0 74 | Prepare IOS For Recording: 0 75 | Force IOS Speakers When Recording: 0 76 | deferSystemGesturesMode: 0 77 | hideHomeButton: 0 78 | submitAnalytics: 1 79 | usePlayerLog: 1 80 | bakeCollisionMeshes: 0 81 | forceSingleInstance: 0 82 | resizableWindow: 0 83 | useMacAppStoreValidation: 0 84 | macAppStoreCategory: public.app-category.games 85 | gpuSkinning: 0 86 | graphicsJobs: 0 87 | xboxPIXTextureCapture: 0 88 | xboxEnableAvatar: 0 89 | xboxEnableKinect: 0 90 | xboxEnableKinectAutoTracking: 0 91 | xboxEnableFitness: 0 92 | visibleInBackground: 1 93 | allowFullscreenSwitch: 1 94 | graphicsJobMode: 0 95 | fullscreenMode: 1 96 | xboxSpeechDB: 0 97 | xboxEnableHeadOrientation: 0 98 | xboxEnableGuest: 0 99 | xboxEnablePIXSampling: 0 100 | metalFramebufferOnly: 0 101 | xboxOneResolution: 0 102 | xboxOneSResolution: 0 103 | xboxOneXResolution: 3 104 | xboxOneMonoLoggingLevel: 0 105 | xboxOneLoggingLevel: 1 106 | xboxOneDisableEsram: 0 107 | xboxOnePresentImmediateThreshold: 0 108 | switchQueueCommandMemory: 1048576 109 | switchQueueControlMemory: 16384 110 | switchQueueComputeMemory: 262144 111 | switchNVNShaderPoolsGranularity: 33554432 112 | switchNVNDefaultPoolsGranularity: 16777216 113 | switchNVNOtherPoolsGranularity: 16777216 114 | vulkanEnableSetSRGBWrite: 0 115 | m_SupportedAspectRatios: 116 | 4:3: 1 117 | 5:4: 1 118 | 16:10: 1 119 | 16:9: 1 120 | Others: 1 121 | bundleVersion: 1.0 122 | preloadedAssets: [] 123 | metroInputSource: 0 124 | wsaTransparentSwapchain: 0 125 | m_HolographicPauseOnTrackingLoss: 1 126 | xboxOneDisableKinectGpuReservation: 0 127 | xboxOneEnable7thCore: 0 128 | vrSettings: 129 | cardboard: 130 | depthFormat: 0 131 | enableTransitionView: 0 132 | daydream: 133 | depthFormat: 0 134 | useSustainedPerformanceMode: 0 135 | enableVideoLayer: 0 136 | useProtectedVideoMemory: 0 137 | minimumSupportedHeadTracking: 0 138 | maximumSupportedHeadTracking: 1 139 | hololens: 140 | depthFormat: 1 141 | depthBufferSharingEnabled: 1 142 | lumin: 143 | depthFormat: 0 144 | frameTiming: 2 145 | enableGLCache: 0 146 | glCacheMaxBlobSize: 524288 147 | glCacheMaxFileSize: 8388608 148 | oculus: 149 | sharedDepthBuffer: 1 150 | dashSupport: 1 151 | enable360StereoCapture: 0 152 | isWsaHolographicRemotingEnabled: 0 153 | protectGraphicsMemory: 0 154 | enableFrameTimingStats: 0 155 | useHDRDisplay: 0 156 | m_ColorGamuts: 00000000 157 | targetPixelDensity: 30 158 | resolutionScalingMode: 0 159 | androidSupportedAspectRatio: 1 160 | androidMaxAspectRatio: 2.1 161 | applicationIdentifier: {} 162 | buildNumber: {} 163 | AndroidBundleVersionCode: 1 164 | AndroidMinSdkVersion: 16 165 | AndroidTargetSdkVersion: 0 166 | AndroidPreferredInstallLocation: 1 167 | aotOptions: 168 | stripEngineCode: 1 169 | iPhoneStrippingLevel: 0 170 | iPhoneScriptCallOptimization: 0 171 | ForceInternetPermission: 0 172 | ForceSDCardPermission: 0 173 | CreateWallpaper: 0 174 | APKExpansionFiles: 0 175 | keepLoadedShadersAlive: 0 176 | StripUnusedMeshComponents: 0 177 | VertexChannelCompressionMask: 214 178 | iPhoneSdkVersion: 988 179 | iOSTargetOSVersionString: 9.0 180 | tvOSSdkVersion: 0 181 | tvOSRequireExtendedGameController: 0 182 | tvOSTargetOSVersionString: 9.0 183 | uIPrerenderedIcon: 0 184 | uIRequiresPersistentWiFi: 0 185 | uIRequiresFullScreen: 1 186 | uIStatusBarHidden: 1 187 | uIExitOnSuspend: 0 188 | uIStatusBarStyle: 0 189 | iPhoneSplashScreen: {fileID: 0} 190 | iPhoneHighResSplashScreen: {fileID: 0} 191 | iPhoneTallHighResSplashScreen: {fileID: 0} 192 | iPhone47inSplashScreen: {fileID: 0} 193 | iPhone55inPortraitSplashScreen: {fileID: 0} 194 | iPhone55inLandscapeSplashScreen: {fileID: 0} 195 | iPhone58inPortraitSplashScreen: {fileID: 0} 196 | iPhone58inLandscapeSplashScreen: {fileID: 0} 197 | iPadPortraitSplashScreen: {fileID: 0} 198 | iPadHighResPortraitSplashScreen: {fileID: 0} 199 | iPadLandscapeSplashScreen: {fileID: 0} 200 | iPadHighResLandscapeSplashScreen: {fileID: 0} 201 | iPhone65inPortraitSplashScreen: {fileID: 0} 202 | iPhone65inLandscapeSplashScreen: {fileID: 0} 203 | iPhone61inPortraitSplashScreen: {fileID: 0} 204 | iPhone61inLandscapeSplashScreen: {fileID: 0} 205 | appleTVSplashScreen: {fileID: 0} 206 | appleTVSplashScreen2x: {fileID: 0} 207 | tvOSSmallIconLayers: [] 208 | tvOSSmallIconLayers2x: [] 209 | tvOSLargeIconLayers: [] 210 | tvOSLargeIconLayers2x: [] 211 | tvOSTopShelfImageLayers: [] 212 | tvOSTopShelfImageLayers2x: [] 213 | tvOSTopShelfImageWideLayers: [] 214 | tvOSTopShelfImageWideLayers2x: [] 215 | iOSLaunchScreenType: 0 216 | iOSLaunchScreenPortrait: {fileID: 0} 217 | iOSLaunchScreenLandscape: {fileID: 0} 218 | iOSLaunchScreenBackgroundColor: 219 | serializedVersion: 2 220 | rgba: 0 221 | iOSLaunchScreenFillPct: 100 222 | iOSLaunchScreenSize: 100 223 | iOSLaunchScreenCustomXibPath: 224 | iOSLaunchScreeniPadType: 0 225 | iOSLaunchScreeniPadImage: {fileID: 0} 226 | iOSLaunchScreeniPadBackgroundColor: 227 | serializedVersion: 2 228 | rgba: 0 229 | iOSLaunchScreeniPadFillPct: 100 230 | iOSLaunchScreeniPadSize: 100 231 | iOSLaunchScreeniPadCustomXibPath: 232 | iOSUseLaunchScreenStoryboard: 0 233 | iOSLaunchScreenCustomStoryboardPath: 234 | iOSDeviceRequirements: [] 235 | iOSURLSchemes: [] 236 | iOSBackgroundModes: 0 237 | iOSMetalForceHardShadows: 0 238 | metalEditorSupport: 1 239 | metalAPIValidation: 1 240 | iOSRenderExtraFrameOnPause: 0 241 | appleDeveloperTeamID: 242 | iOSManualSigningProvisioningProfileID: 243 | tvOSManualSigningProvisioningProfileID: 244 | iOSManualSigningProvisioningProfileType: 0 245 | tvOSManualSigningProvisioningProfileType: 0 246 | appleEnableAutomaticSigning: 0 247 | iOSRequireARKit: 0 248 | iOSAutomaticallyDetectAndAddCapabilities: 1 249 | appleEnableProMotion: 0 250 | clonedFromGUID: 00000000000000000000000000000000 251 | templatePackageId: 252 | templateDefaultScene: 253 | AndroidTargetArchitectures: 5 254 | AndroidSplashScreenScale: 0 255 | androidSplashScreen: {fileID: 0} 256 | AndroidKeystoreName: '{inproject}: ' 257 | AndroidKeyaliasName: 258 | AndroidBuildApkPerCpuArchitecture: 0 259 | AndroidTVCompatibility: 1 260 | AndroidIsGame: 1 261 | AndroidEnableTango: 0 262 | androidEnableBanner: 1 263 | androidUseLowAccuracyLocation: 0 264 | androidUseCustomKeystore: 0 265 | m_AndroidBanners: 266 | - width: 320 267 | height: 180 268 | banner: {fileID: 0} 269 | androidGamepadSupportLevel: 0 270 | resolutionDialogBanner: {fileID: 0} 271 | m_BuildTargetIcons: [] 272 | m_BuildTargetPlatformIcons: [] 273 | m_BuildTargetBatching: [] 274 | m_BuildTargetGraphicsAPIs: [] 275 | m_BuildTargetVRSettings: [] 276 | m_BuildTargetEnableVuforiaSettings: [] 277 | openGLRequireES31: 0 278 | openGLRequireES31AEP: 0 279 | openGLRequireES32: 0 280 | m_TemplateCustomTags: {} 281 | mobileMTRendering: 282 | Android: 1 283 | iPhone: 1 284 | tvOS: 1 285 | m_BuildTargetGroupLightmapEncodingQuality: 286 | - m_BuildTarget: Standalone 287 | m_EncodingQuality: 1 288 | - m_BuildTarget: XboxOne 289 | m_EncodingQuality: 1 290 | - m_BuildTarget: PS4 291 | m_EncodingQuality: 1 292 | m_BuildTargetGroupLightmapSettings: [] 293 | playModeTestRunnerEnabled: 0 294 | runPlayModeTestAsEditModeTest: 0 295 | actionOnDotNetUnhandledException: 1 296 | enableInternalProfiler: 0 297 | logObjCUncaughtExceptions: 1 298 | enableCrashReportAPI: 0 299 | cameraUsageDescription: 300 | locationUsageDescription: 301 | microphoneUsageDescription: 302 | switchNetLibKey: 303 | switchSocketMemoryPoolSize: 6144 304 | switchSocketAllocatorPoolSize: 128 305 | switchSocketConcurrencyLimit: 14 306 | switchScreenResolutionBehavior: 2 307 | switchUseCPUProfiler: 0 308 | switchApplicationID: 0x01004b9000490000 309 | switchNSODependencies: 310 | switchTitleNames_0: 311 | switchTitleNames_1: 312 | switchTitleNames_2: 313 | switchTitleNames_3: 314 | switchTitleNames_4: 315 | switchTitleNames_5: 316 | switchTitleNames_6: 317 | switchTitleNames_7: 318 | switchTitleNames_8: 319 | switchTitleNames_9: 320 | switchTitleNames_10: 321 | switchTitleNames_11: 322 | switchTitleNames_12: 323 | switchTitleNames_13: 324 | switchTitleNames_14: 325 | switchPublisherNames_0: 326 | switchPublisherNames_1: 327 | switchPublisherNames_2: 328 | switchPublisherNames_3: 329 | switchPublisherNames_4: 330 | switchPublisherNames_5: 331 | switchPublisherNames_6: 332 | switchPublisherNames_7: 333 | switchPublisherNames_8: 334 | switchPublisherNames_9: 335 | switchPublisherNames_10: 336 | switchPublisherNames_11: 337 | switchPublisherNames_12: 338 | switchPublisherNames_13: 339 | switchPublisherNames_14: 340 | switchIcons_0: {fileID: 0} 341 | switchIcons_1: {fileID: 0} 342 | switchIcons_2: {fileID: 0} 343 | switchIcons_3: {fileID: 0} 344 | switchIcons_4: {fileID: 0} 345 | switchIcons_5: {fileID: 0} 346 | switchIcons_6: {fileID: 0} 347 | switchIcons_7: {fileID: 0} 348 | switchIcons_8: {fileID: 0} 349 | switchIcons_9: {fileID: 0} 350 | switchIcons_10: {fileID: 0} 351 | switchIcons_11: {fileID: 0} 352 | switchIcons_12: {fileID: 0} 353 | switchIcons_13: {fileID: 0} 354 | switchIcons_14: {fileID: 0} 355 | switchSmallIcons_0: {fileID: 0} 356 | switchSmallIcons_1: {fileID: 0} 357 | switchSmallIcons_2: {fileID: 0} 358 | switchSmallIcons_3: {fileID: 0} 359 | switchSmallIcons_4: {fileID: 0} 360 | switchSmallIcons_5: {fileID: 0} 361 | switchSmallIcons_6: {fileID: 0} 362 | switchSmallIcons_7: {fileID: 0} 363 | switchSmallIcons_8: {fileID: 0} 364 | switchSmallIcons_9: {fileID: 0} 365 | switchSmallIcons_10: {fileID: 0} 366 | switchSmallIcons_11: {fileID: 0} 367 | switchSmallIcons_12: {fileID: 0} 368 | switchSmallIcons_13: {fileID: 0} 369 | switchSmallIcons_14: {fileID: 0} 370 | switchManualHTML: 371 | switchAccessibleURLs: 372 | switchLegalInformation: 373 | switchMainThreadStackSize: 1048576 374 | switchPresenceGroupId: 375 | switchLogoHandling: 0 376 | switchReleaseVersion: 0 377 | switchDisplayVersion: 1.0.0 378 | switchStartupUserAccount: 0 379 | switchTouchScreenUsage: 0 380 | switchSupportedLanguagesMask: 0 381 | switchLogoType: 0 382 | switchApplicationErrorCodeCategory: 383 | switchUserAccountSaveDataSize: 0 384 | switchUserAccountSaveDataJournalSize: 0 385 | switchApplicationAttribute: 0 386 | switchCardSpecSize: -1 387 | switchCardSpecClock: -1 388 | switchRatingsMask: 0 389 | switchRatingsInt_0: 0 390 | switchRatingsInt_1: 0 391 | switchRatingsInt_2: 0 392 | switchRatingsInt_3: 0 393 | switchRatingsInt_4: 0 394 | switchRatingsInt_5: 0 395 | switchRatingsInt_6: 0 396 | switchRatingsInt_7: 0 397 | switchRatingsInt_8: 0 398 | switchRatingsInt_9: 0 399 | switchRatingsInt_10: 0 400 | switchRatingsInt_11: 0 401 | switchLocalCommunicationIds_0: 402 | switchLocalCommunicationIds_1: 403 | switchLocalCommunicationIds_2: 404 | switchLocalCommunicationIds_3: 405 | switchLocalCommunicationIds_4: 406 | switchLocalCommunicationIds_5: 407 | switchLocalCommunicationIds_6: 408 | switchLocalCommunicationIds_7: 409 | switchParentalControl: 0 410 | switchAllowsScreenshot: 1 411 | switchAllowsVideoCapturing: 1 412 | switchAllowsRuntimeAddOnContentInstall: 0 413 | switchDataLossConfirmation: 0 414 | switchUserAccountLockEnabled: 0 415 | switchSystemResourceMemory: 16777216 416 | switchSupportedNpadStyles: 3 417 | switchNativeFsCacheSize: 32 418 | switchIsHoldTypeHorizontal: 0 419 | switchSupportedNpadCount: 8 420 | switchSocketConfigEnabled: 0 421 | switchTcpInitialSendBufferSize: 32 422 | switchTcpInitialReceiveBufferSize: 64 423 | switchTcpAutoSendBufferSizeMax: 256 424 | switchTcpAutoReceiveBufferSizeMax: 256 425 | switchUdpSendBufferSize: 9 426 | switchUdpReceiveBufferSize: 42 427 | switchSocketBufferEfficiency: 4 428 | switchSocketInitializeEnabled: 1 429 | switchNetworkInterfaceManagerInitializeEnabled: 1 430 | switchPlayerConnectionEnabled: 1 431 | ps4NPAgeRating: 12 432 | ps4NPTitleSecret: 433 | ps4NPTrophyPackPath: 434 | ps4ParentalLevel: 11 435 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 436 | ps4Category: 0 437 | ps4MasterVersion: 01.00 438 | ps4AppVersion: 01.00 439 | ps4AppType: 0 440 | ps4ParamSfxPath: 441 | ps4VideoOutPixelFormat: 0 442 | ps4VideoOutInitialWidth: 1920 443 | ps4VideoOutBaseModeInitialWidth: 1920 444 | ps4VideoOutReprojectionRate: 60 445 | ps4PronunciationXMLPath: 446 | ps4PronunciationSIGPath: 447 | ps4BackgroundImagePath: 448 | ps4StartupImagePath: 449 | ps4StartupImagesFolder: 450 | ps4IconImagesFolder: 451 | ps4SaveDataImagePath: 452 | ps4SdkOverride: 453 | ps4BGMPath: 454 | ps4ShareFilePath: 455 | ps4ShareOverlayImagePath: 456 | ps4PrivacyGuardImagePath: 457 | ps4NPtitleDatPath: 458 | ps4RemotePlayKeyAssignment: -1 459 | ps4RemotePlayKeyMappingDir: 460 | ps4PlayTogetherPlayerCount: 0 461 | ps4EnterButtonAssignment: 1 462 | ps4ApplicationParam1: 0 463 | ps4ApplicationParam2: 0 464 | ps4ApplicationParam3: 0 465 | ps4ApplicationParam4: 0 466 | ps4DownloadDataSize: 0 467 | ps4GarlicHeapSize: 2048 468 | ps4ProGarlicHeapSize: 2560 469 | playerPrefsMaxSize: 32768 470 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 471 | ps4pnSessions: 1 472 | ps4pnPresence: 1 473 | ps4pnFriends: 1 474 | ps4pnGameCustomData: 1 475 | playerPrefsSupport: 0 476 | enableApplicationExit: 0 477 | resetTempFolder: 1 478 | restrictedAudioUsageRights: 0 479 | ps4UseResolutionFallback: 0 480 | ps4ReprojectionSupport: 0 481 | ps4UseAudio3dBackend: 0 482 | ps4SocialScreenEnabled: 0 483 | ps4ScriptOptimizationLevel: 0 484 | ps4Audio3dVirtualSpeakerCount: 14 485 | ps4attribCpuUsage: 0 486 | ps4PatchPkgPath: 487 | ps4PatchLatestPkgPath: 488 | ps4PatchChangeinfoPath: 489 | ps4PatchDayOne: 0 490 | ps4attribUserManagement: 0 491 | ps4attribMoveSupport: 0 492 | ps4attrib3DSupport: 0 493 | ps4attribShareSupport: 0 494 | ps4attribExclusiveVR: 0 495 | ps4disableAutoHideSplash: 0 496 | ps4videoRecordingFeaturesUsed: 0 497 | ps4contentSearchFeaturesUsed: 0 498 | ps4attribEyeToEyeDistanceSettingVR: 0 499 | ps4IncludedModules: [] 500 | monoEnv: 501 | splashScreenBackgroundSourceLandscape: {fileID: 0} 502 | splashScreenBackgroundSourcePortrait: {fileID: 0} 503 | spritePackerPolicy: 504 | webGLMemorySize: 256 505 | webGLExceptionSupport: 1 506 | webGLNameFilesAsHashes: 0 507 | webGLDataCaching: 0 508 | webGLDebugSymbols: 0 509 | webGLEmscriptenArgs: 510 | webGLModulesDirectory: 511 | webGLTemplate: APPLICATION:Default 512 | webGLAnalyzeBuildSize: 0 513 | webGLUseEmbeddedResources: 0 514 | webGLCompressionFormat: 1 515 | webGLLinkerTarget: 1 516 | webGLThreadsSupport: 0 517 | webGLWasmStreaming: 0 518 | scriptingDefineSymbols: {} 519 | platformArchitecture: {} 520 | scriptingBackend: {} 521 | il2cppCompilerConfiguration: {} 522 | managedStrippingLevel: {} 523 | incrementalIl2cppBuild: {} 524 | allowUnsafeCode: 0 525 | additionalIl2CppArgs: 526 | scriptingRuntimeVersion: 1 527 | gcIncremental: 0 528 | gcWBarrierValidation: 0 529 | apiCompatibilityLevelPerPlatform: {} 530 | m_RenderingPath: 1 531 | m_MobileRenderingPath: 1 532 | metroPackageName: Screenshot2Slack 533 | metroPackageVersion: 534 | metroCertificatePath: 535 | metroCertificatePassword: 536 | metroCertificateSubject: 537 | metroCertificateIssuer: 538 | metroCertificateNotAfter: 0000000000000000 539 | metroApplicationDescription: Screenshot2Slack 540 | wsaImages: {} 541 | metroTileShortName: 542 | metroTileShowName: 0 543 | metroMediumTileShowName: 0 544 | metroLargeTileShowName: 0 545 | metroWideTileShowName: 0 546 | metroSupportStreamingInstall: 0 547 | metroLastRequiredScene: 0 548 | metroDefaultTileSize: 1 549 | metroTileForegroundText: 2 550 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 551 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 552 | a: 1} 553 | metroSplashScreenUseBackgroundColor: 0 554 | platformCapabilities: {} 555 | metroTargetDeviceFamilies: {} 556 | metroFTAName: 557 | metroFTAFileTypes: [] 558 | metroProtocolName: 559 | XboxOneProductId: 560 | XboxOneUpdateKey: 561 | XboxOneSandboxId: 562 | XboxOneContentId: 563 | XboxOneTitleId: 564 | XboxOneSCId: 565 | XboxOneGameOsOverridePath: 566 | XboxOnePackagingOverridePath: 567 | XboxOneAppManifestOverridePath: 568 | XboxOneVersion: 1.0.0.0 569 | XboxOnePackageEncryption: 0 570 | XboxOnePackageUpdateGranularity: 2 571 | XboxOneDescription: 572 | XboxOneLanguage: 573 | - enus 574 | XboxOneCapability: [] 575 | XboxOneGameRating: {} 576 | XboxOneIsContentPackage: 0 577 | XboxOneEnableGPUVariability: 0 578 | XboxOneSockets: {} 579 | XboxOneSplashScreen: {fileID: 0} 580 | XboxOneAllowedProductIds: [] 581 | XboxOnePersistentLocalStorageSize: 0 582 | XboxOneXTitleMemory: 8 583 | xboxOneScriptCompiler: 1 584 | XboxOneOverrideIdentityName: 585 | vrEditorSettings: 586 | daydream: 587 | daydreamIconForeground: {fileID: 0} 588 | daydreamIconBackground: {fileID: 0} 589 | cloudServicesEnabled: {} 590 | luminIcon: 591 | m_Name: 592 | m_ModelFolderPath: 593 | m_PortalFolderPath: 594 | luminCert: 595 | m_CertPath: 596 | m_SignPackage: 1 597 | luminIsChannelApp: 0 598 | luminVersion: 599 | m_VersionCode: 1 600 | m_VersionName: 601 | facebookSdkVersion: 7.9.4 602 | facebookAppId: 603 | facebookCookies: 1 604 | facebookLogging: 1 605 | facebookStatus: 1 606 | facebookXfbml: 0 607 | facebookFrictionlessRequests: 1 608 | apiCompatibilityLevel: 6 609 | cloudProjectId: 610 | framebufferDepthMemorylessMode: 0 611 | projectName: 612 | organizationId: 613 | cloudEnabled: 0 614 | enableNativePlatformBackendsForNewInputSystem: 0 615 | disableOldInputManagerSupport: 0 616 | legacyClampBlendShapeWeights: 1 617 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.1.14f1 2 | m_EditorVersionWithRevision: 2019.1.14f1 (148b5891095a) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 4 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 4 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 0 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 4 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 70 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 2 136 | antiAliasing: 2 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 4 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 4 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSM: 5 183 | PSP2: 2 184 | Samsung TV: 2 185 | Standalone: 5 186 | Tizen: 2 187 | WebGL: 3 188 | WiiU: 5 189 | Windows Store Apps: 5 190 | XboxOne: 5 191 | iPhone: 2 192 | tvOS: 2 193 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | m_Enabled: 0 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | m_TestInitMode: 0 11 | CrashReportingSettings: 12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate 14 | m_Enabled: 0 15 | m_CaptureEditorExceptions: 1 16 | UnityPurchasingSettings: 17 | m_Enabled: 0 18 | m_TestMode: 0 19 | UnityAnalyticsSettings: 20 | m_Enabled: 0 21 | m_InitializeOnStartup: 1 22 | m_TestMode: 0 23 | m_TestEventUrl: 24 | m_TestConfigUrl: 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Capture-2-Device

2 | 3 |

4 | Capture-2-Device 5 |

6 | 7 |

8 | 9 | Platform 10 | 11 | 12 | Last Commit 13 | 14 | 15 | MIT License 16 | 17 |

18 | 19 | It is simple plugin for TA process in unity. 20 | If you want to see how your `game scene` feels inside the `real device`, You have to capture game scene and transfer it to the your device. 21 | This plug-in automates this process with a one button. 22 | 23 | ## To Do 24 | - [ ] : Auto update backup path in `.gitignore` 25 | - [ ] : Add setup guide 26 | 27 | ## How to Use 28 | 29 | ![image](https://github.com/rlatkdgus500/Capture-2-Device/blob/master/fig-1.png) 30 | 31 | > 1. Select the folder where you want to save the screenshot. (Add `folder path` to `.gitignore` file) 32 | > 1. Click right button, Find and Click `OrcaAssist > Set C2D Backup Path` 33 | > 1. Setup 'Slack Bot' or `Telegram Bot` and get api token. (See here for more information) 34 | > 1. Write more setting infomation (ex. channel name, chat_id etc... ) 35 | > 1. Now, you can use `OrcaAssist > Capture 2 Device > to Slack`, `to Telegram` or `to Discord` function 36 | 37 | 38 | ## How to Get Token 39 | ### Slack 40 | ***UPDATE SOON*** 41 | 42 | ### Telegram 43 | ***UPDATE SOON*** 44 | 45 | ### Discord 46 | > Really easy to acquire tokens for webhook. Check [Here](https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks) 47 | 48 | ## License 49 | 50 | 51 | 52 | The class is licensed under the [MIT License](http://opensource.org/licenses/MIT): 53 | 54 | Copyright © 2017 [Sang Hyeon Kim](http://www.github.com/rlatkdgus500). 55 | 56 | 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: 57 | 58 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 59 | -------------------------------------------------------------------------------- /fig-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dhfmzk/Capture-2-Device/c939eecd4de14a72ffa6676785fccbf0cc8b554d/fig-1.png --------------------------------------------------------------------------------