├── .gitignore ├── AssemblyInfo.cs ├── AssemblyInfo.cs.meta ├── BlockadeLabsSDK.Runtime.asmdef ├── BlockadeLabsSDK.Runtime.asmdef.meta ├── CHANGELOG.md ├── CHANGELOG.md.meta ├── Documentation.pdf ├── Documentation.pdf.meta ├── Editor.meta ├── Editor ├── BlockadeLabsSDK.Editor.asmdef ├── BlockadeLabsSDK.Editor.asmdef.meta ├── Extensions.meta ├── Extensions │ ├── CubemapExtensions.cs │ └── CubemapExtensions.cs.meta ├── IMGUI.meta ├── IMGUI │ ├── BlockadeGUI.cs │ ├── BlockadeGUI.cs.meta │ ├── WindowUtils.cs │ └── WindowUtils.cs.meta ├── Inspectors.meta ├── Inspectors │ ├── BlockadeLabsConfigurationInspector.cs │ ├── BlockadeLabsConfigurationInspector.cs.meta │ ├── BlockadeLabsSkyboxGeneratorEditor.cs │ ├── BlockadeLabsSkyboxGeneratorEditor.cs.meta │ ├── BlockadeLabsSkyboxMeshEditor.cs │ ├── BlockadeLabsSkyboxMeshEditor.cs.meta │ ├── SkyboxAIEditor.cs │ ├── SkyboxAIEditor.cs.meta │ ├── StartScreen.cs │ ├── StartScreen.cs.meta │ ├── Survey.cs │ └── Survey.cs.meta ├── PluginSettings.cs ├── PluginSettings.cs.meta ├── SkyboxStylePropertyDrawer.cs ├── SkyboxStylePropertyDrawer.cs.meta ├── VSAttribution.cs └── VSAttribution.cs.meta ├── Fonts.meta ├── Fonts ├── Inter-Bold SDF.asset ├── Inter-Bold SDF.asset.meta ├── Inter-Bold.ttf ├── Inter-Bold.ttf.meta ├── Inter-Medium SDF.asset ├── Inter-Medium SDF.asset.meta ├── Inter-Medium.ttf ├── Inter-Medium.ttf.meta ├── Inter-Regular SDF.asset ├── Inter-Regular SDF.asset.meta ├── Inter-Regular.ttf └── Inter-Regular.ttf.meta ├── Materials.meta ├── Materials ├── Metallic HDRP.mat ├── Metallic HDRP.mat.meta ├── Metallic URP.mat ├── Metallic URP.mat.meta ├── Metallic.mat ├── Metallic.mat.meta ├── Reflective HDRP.mat ├── Reflective HDRP.mat.meta ├── Reflective URP.mat ├── Reflective URP.mat.meta ├── Reflective.mat ├── Reflective.mat.meta ├── Skybox Depth Material.mat ├── Skybox Depth Material.mat.meta ├── Skybox Depth Shader Graph Material.mat ├── Skybox Depth Shader Graph Material.mat.meta ├── Skybox Material.mat ├── Skybox Material.mat.meta ├── Smooth HDRP.mat ├── Smooth HDRP.mat.meta ├── Smooth URP.mat ├── Smooth URP.mat.meta ├── Smooth.mat └── Smooth.mat.meta ├── Meshes.meta ├── Meshes ├── SkyboxPreviewMesh.asset └── SkyboxPreviewMesh.asset.meta ├── Prefabs.meta ├── Prefabs ├── History Item.prefab ├── History Item.prefab.meta ├── Style Item.prefab ├── Style Item.prefab.meta ├── Style Picker Panel.prefab └── Style Picker Panel.prefab.meta ├── README.md ├── README.md.meta ├── Runtime.meta ├── Runtime ├── API.meta ├── API │ ├── BaseResponse.cs │ ├── BaseResponse.cs.meta │ ├── BlockadeLabsAuthInfo.cs │ ├── BlockadeLabsAuthInfo.cs.meta │ ├── BlockadeLabsAuthentication.cs │ ├── BlockadeLabsAuthentication.cs.meta │ ├── BlockadeLabsBaseEndpoint.cs │ ├── BlockadeLabsBaseEndpoint.cs.meta │ ├── BlockadeLabsClient.cs │ ├── BlockadeLabsClient.cs.meta │ ├── BlockadeLabsClientSettings.cs │ ├── BlockadeLabsClientSettings.cs.meta │ ├── BlockadeLabsClientSettingsInfo.cs │ ├── BlockadeLabsClientSettingsInfo.cs.meta │ ├── BlockadeLabsConfiguration.cs │ ├── BlockadeLabsConfiguration.cs.meta │ ├── ExportUtilities.cs │ ├── ExportUtilities.cs.meta │ ├── Feedback.meta │ ├── Feedback │ │ ├── FeedbackEndpoint.cs │ │ └── FeedbackEndpoint.cs.meta │ ├── IListResponse.cs │ ├── IListResponse.cs.meta │ ├── Response.cs │ ├── Response.cs.meta │ ├── ResponseExtensions.cs │ ├── ResponseExtensions.cs.meta │ ├── Rest.cs │ ├── Rest.cs.meta │ ├── RestException.cs │ ├── RestException.cs.meta │ ├── Skyboxes.meta │ └── Skyboxes │ │ ├── DefaultExportOptions.cs │ │ ├── DefaultExportOptions.cs.meta │ │ ├── IStatus.cs │ │ ├── IStatus.cs.meta │ │ ├── SkyboxEndpoint.cs │ │ ├── SkyboxEndpoint.cs.meta │ │ ├── SkyboxExportOption.cs │ │ ├── SkyboxExportOption.cs.meta │ │ ├── SkyboxExportRequest.cs │ │ ├── SkyboxExportRequest.cs.meta │ │ ├── SkyboxHistory.cs │ │ ├── SkyboxHistory.cs.meta │ │ ├── SkyboxHistoryParameters.cs │ │ ├── SkyboxHistoryParameters.cs.meta │ │ ├── SkyboxInfo.cs │ │ ├── SkyboxInfo.cs.meta │ │ ├── SkyboxModel.cs │ │ ├── SkyboxModel.cs.meta │ │ ├── SkyboxRequest.cs │ │ ├── SkyboxRequest.cs.meta │ │ ├── SkyboxStyle.cs │ │ ├── SkyboxStyle.cs.meta │ │ ├── SortOrder.cs │ │ ├── SortOrder.cs.meta │ │ ├── Status.cs │ │ └── Status.cs.meta ├── Extensions.meta ├── Extensions │ ├── AssetUtils.cs │ ├── AssetUtils.cs.meta │ ├── AwaiterExtensions.cs │ ├── AwaiterExtensions.cs.meta │ ├── BakeDepth.cs │ ├── BakeDepth.cs.meta │ ├── ObjectUtils.cs │ ├── ObjectUtils.cs.meta │ ├── PanoramicToCubemap.cs │ ├── PanoramicToCubemap.cs.meta │ ├── StringExtensions.cs │ ├── StringExtensions.cs.meta │ ├── UnityMainThread.cs │ ├── UnityMainThread.cs.meta │ ├── UnityMainThreadAwaiter.cs │ ├── UnityMainThreadAwaiter.cs.meta │ ├── UnitySynchronizationContext.cs │ ├── UnitySynchronizationContext.cs.meta │ ├── UnityWebRequestAwaiter.cs │ └── UnityWebRequestAwaiter.cs.meta ├── SkyboxAI.cs ├── SkyboxAI.cs.meta ├── TetrahedronMesh.cs ├── TetrahedronMesh.cs.meta ├── UI.meta └── UI │ ├── AspectLayoutElement.cs │ ├── AspectLayoutElement.cs.meta │ ├── BlockadeDemoCamera.cs │ ├── BlockadeDemoCamera.cs.meta │ ├── BlockadeLabsSkyboxGenerator.cs │ ├── BlockadeLabsSkyboxGenerator.cs.meta │ ├── BlockadeLabsSkyboxMesh.cs │ ├── BlockadeLabsSkyboxMesh.cs.meta │ ├── DialogBox.cs │ ├── DialogBox.cs.meta │ ├── DisabledColor.cs │ ├── DisabledColor.cs.meta │ ├── DpiFixer.cs │ ├── DpiFixer.cs.meta │ ├── DynamicMaterial.cs │ ├── DynamicMaterial.cs.meta │ ├── HDRPDemoVolume.cs │ ├── HDRPDemoVolume.cs.meta │ ├── HideAfterClick.cs │ ├── HideAfterClick.cs.meta │ ├── HistoryItemBehaviour.cs │ ├── HistoryItemBehaviour.cs.meta │ ├── HistoryPanel.cs │ ├── HistoryPanel.cs.meta │ ├── Hoverable.cs │ ├── Hoverable.cs.meta │ ├── InputFieldResizer.cs │ ├── InputFieldResizer.cs.meta │ ├── MultiToggle.cs │ ├── MultiToggle.cs.meta │ ├── OpenHyperlink.cs │ ├── OpenHyperlink.cs.meta │ ├── PopupButton.cs │ ├── PopupButton.cs.meta │ ├── RemixPanel.cs │ ├── RemixPanel.cs.meta │ ├── RuntimeGuiManager.cs │ ├── RuntimeGuiManager.cs.meta │ ├── SearchToolbar.cs │ ├── SearchToolbar.cs.meta │ ├── SkyboxPreviewPopup.cs │ ├── SkyboxPreviewPopup.cs.meta │ ├── StyleItem.cs │ ├── StyleItem.cs.meta │ ├── StylePickerPanel.cs │ └── StylePickerPanel.cs.meta ├── Scenes.meta ├── Scenes ├── SkyboxScene.unity └── SkyboxScene.unity.meta ├── Settings.asset ├── Settings.asset.meta ├── Shaders.meta ├── Shaders ├── Blockade Skybox Depth Shader Graph.shadergraph ├── Blockade Skybox Depth Shader Graph.shadergraph.meta ├── Blockade Skybox Depth.shader ├── Blockade Skybox Depth.shader.meta ├── PanoramicToCubemap.compute └── PanoramicToCubemap.compute.meta ├── SkyboxTextures.meta ├── SkyboxTextures ├── default_skybox_texture.png └── default_skybox_texture.png.meta ├── Sprites.meta ├── Sprites ├── PlaceholderPreview.png ├── PlaceholderPreview.png.meta ├── api-icon.png ├── api-icon.png.meta ├── arrow.png ├── arrow.png.meta ├── autopan-icon.png ├── autopan-icon.png.meta ├── blockade-logo.png ├── blockade-logo.png.meta ├── blockadelabs_icon.png ├── blockadelabs_icon.png.meta ├── border-4.png ├── border-4.png.meta ├── border-6.png ├── border-6.png.meta ├── border-8.png ├── border-8.png.meta ├── checkmark.png ├── checkmark.png.meta ├── close.png ├── close.png.meta ├── create-icon.png ├── create-icon.png.meta ├── cup.png ├── cup.png.meta ├── download.png ├── download.png.meta ├── edit-icon.png ├── edit-icon.png.meta ├── elipsis.png ├── elipsis.png.meta ├── experimental.png ├── experimental.png.meta ├── eye.png ├── eye.png.meta ├── half-circle.png ├── half-circle.png.meta ├── heart-outline.png ├── heart-outline.png.meta ├── heart.png ├── heart.png.meta ├── hide-icon.png ├── hide-icon.png.meta ├── info.png ├── info.png.meta ├── model-3-gradient.png ├── model-3-gradient.png.meta ├── model-3-tag.png ├── model-3-tag.png.meta ├── new.png ├── new.png.meta ├── premium.png ├── premium.png.meta ├── question-mark.png ├── question-mark.png.meta ├── radio-off.png ├── radio-off.png.meta ├── radio-on.png ├── radio-on.png.meta ├── remix-icon.png ├── remix-icon.png.meta ├── skybox-ai-logo.png ├── skybox-ai-logo.png.meta ├── toggle-off.png ├── toggle-off.png.meta ├── toggle-on.png ├── toggle-on.png.meta ├── trash.png ├── trash.png.meta ├── triangle.png ├── triangle.png.meta ├── upload.png ├── upload.png.meta ├── world-icon.png └── world-icon.png.meta ├── Tests.meta ├── Tests ├── AbstractTestFixture.cs ├── AbstractTestFixture.cs.meta ├── BlockadeLabsSDK.Tests.asmdef ├── BlockadeLabsSDK.Tests.asmdef.meta ├── TestFixture_00_Authentication.cs ├── TestFixture_00_Authentication.cs.meta ├── TestFixture_01_Skyboxes.cs └── TestFixture_01_Skyboxes.cs.meta ├── Textures.meta ├── Textures ├── PreviewRenderTexture.renderTexture └── PreviewRenderTexture.renderTexture.meta ├── Volumes.meta ├── Volumes ├── Blockade HDRP Volume Profile.asset └── Blockade HDRP Volume Profile.asset.meta ├── package.json └── package.json.meta /.gitignore: -------------------------------------------------------------------------------- 1 | # Autogenerated Jetbrains Rider plugin 2 | /[Aa]ssets/Plugins/Editor/JetBrains* 3 | 4 | # Visual Studio cache directory 5 | .vs/ 6 | 7 | # Idea directory 8 | .idea/ 9 | 10 | # vscode configuration 11 | .vscode 12 | 13 | # OSX directory attributes 14 | .DS_Store -------------------------------------------------------------------------------- /AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | 3 | [assembly: InternalsVisibleTo("BlockadeLabsSDK.Editor")] 4 | [assembly: InternalsVisibleTo("BlockadeLabsSDK.Tests")] 5 | -------------------------------------------------------------------------------- /AssemblyInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cc77009dd3432994da5e30c32e67ac0f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /BlockadeLabsSDK.Runtime.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BlockadeLabsSDK.Runtime", 3 | "rootNamespace": "BlockadeLabsSDK.Runtime", 4 | "references": [ 5 | "Unity.TextMeshPro", 6 | "Unity.RenderPipelines.Core.Runtime", 7 | "Unity.RenderPipelines.HighDefinition.Runtime" 8 | ], 9 | "includePlatforms": [], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [ 17 | { 18 | "name": "com.pusher.pusherwebsocketunity", 19 | "expression": "2.1.0", 20 | "define": "PUSHER_PRESENT" 21 | }, 22 | { 23 | "name": "com.unity.render-pipelines.high-definition", 24 | "expression": "10.4.0", 25 | "define": "UNITY_HDRP" 26 | } 27 | ], 28 | "noEngineReferences": false 29 | } -------------------------------------------------------------------------------- /BlockadeLabsSDK.Runtime.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 88fee50dfbdd74f41bb80686af654b7f 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /CHANGELOG.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0519ee665fde4ef0bb74e40b3fffff42 3 | timeCreated: 1695111451 -------------------------------------------------------------------------------- /Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Documentation.pdf -------------------------------------------------------------------------------- /Documentation.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 227736091f01ee94298c4e947bf9a824 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e72b0732843b79842a634a7fd6d3931a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/BlockadeLabsSDK.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BlockadeLabsSDK.Editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "BlockadeLabsSDK.Runtime" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [ 17 | { 18 | "name": "com.pusher.pusherwebsocketunity", 19 | "expression": "2.1.0", 20 | "define": "PUSHER_PRESENT" 21 | }, 22 | { 23 | "name": "com.unity.render-pipelines.high-definition", 24 | "expression": "10.4.0", 25 | "define": "UNITY_HDRP" 26 | } 27 | ], 28 | "noEngineReferences": false 29 | } -------------------------------------------------------------------------------- /Editor/BlockadeLabsSDK.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f4de92e7edd02394bb08ab65b3c05486 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor/Extensions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1337f6537212010489833fd32d02dbf3 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Extensions/CubemapExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace BlockadeLabs.Editor 5 | { 6 | internal static class CubemapExtensions 7 | { 8 | private const string UnityEditorTextureUtil = "UnityEditor.TextureUtil, UnityEditor"; 9 | 10 | private static Type TextureUtil { get; } = Type.GetType(UnityEditorTextureUtil); 11 | 12 | private static System.Reflection.MethodInfo CopyTextureIntoCubemapFace { get; } = 13 | TextureUtil.GetMethod( 14 | nameof(CopyTextureIntoCubemapFace), 15 | System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public, 16 | null, 17 | new[] { typeof(Texture2D), typeof(Cubemap), typeof(CubemapFace) }, 18 | null); 19 | 20 | internal static void SetCubemapTexture(this Cubemap cubemap, Texture2D texture, CubemapFace face) 21 | => CopyTextureIntoCubemapFace.Invoke(null, new object[] { texture, cubemap, (int)face }); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Editor/Extensions/CubemapExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aaf47ebd57c1be944a04be4ee30770d0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/IMGUI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ee0f2438d32daf04ebca05df1c8de343 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/IMGUI/BlockadeGUI.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8827acf45e9342641a54ab227cf2b538 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/IMGUI/WindowUtils.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Text.RegularExpressions; 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | namespace BlockadeLabsSDK.Editor 7 | { 8 | internal static class WindowUtils 9 | { 10 | public const string MenuRoot = "Tools/Blockade Labs"; 11 | 12 | private const string _packageJsonGuid = "fb5dc3ed6cb9cdf469562dd9cddee9b9"; 13 | private const string _logoGuid = "7a7ad95e1e1c4ee488d47d37aa36e95a"; 14 | private const string _fontGuid = "1b5ca89b842763248980ff468bb292ea"; 15 | 16 | private static string _version; 17 | 18 | public static void DrawLogo() 19 | { 20 | BlockadeGUI.Image(_logoGuid, 165, 42); 21 | } 22 | 23 | public static string GetVersion() 24 | { 25 | if (_version == null) 26 | { 27 | var projectFilePath = AssetDatabase.GUIDToAssetPath(_packageJsonGuid); 28 | var lines = File.ReadAllText(projectFilePath); 29 | var rx = new Regex("\"version\": \"(.*?)\""); 30 | _version = rx.Match(lines).Groups[1].Value; 31 | } 32 | 33 | return _version; 34 | } 35 | 36 | public static void CenterOnEditor(EditorWindow window) 37 | { 38 | #if UNITY_2020_1_OR_NEWER 39 | var main = EditorGUIUtility.GetMainWindowPosition(); 40 | var pos = window.position; 41 | float w = (main.width - pos.width) * 0.5f; 42 | float h = (main.height - pos.height) * 0.5f; 43 | pos.x = main.x + w; 44 | pos.y = main.y + h; 45 | window.position = pos; 46 | #endif 47 | } 48 | 49 | public static Font GetFont() 50 | { 51 | return AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(_fontGuid)); 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /Editor/IMGUI/WindowUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e89513a859ef3ff4baf00eb717cb6aa6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Inspectors.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 88fd5e88b593aca4fb089cf566b63ad0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Inspectors/BlockadeLabsConfigurationInspector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 47ae91177528eca42823a34e89d188f7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Inspectors/BlockadeLabsSkyboxGeneratorEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1a19ab26082f33f4d948abe4f83b06f0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Inspectors/BlockadeLabsSkyboxMeshEditor.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | namespace BlockadeLabsSDK.Editor 5 | { 6 | [CustomEditor(typeof(BlockadeLabsSkyboxMesh))] 7 | internal class BlockadeLabsSkyboxMeshEditor : UnityEditor.Editor 8 | { 9 | private SerializedProperty _skyboxMetadata; 10 | private SerializedProperty _meshDensity; 11 | private SerializedProperty _depthScale; 12 | 13 | private void OnEnable() 14 | { 15 | _skyboxMetadata = serializedObject.FindProperty(nameof(_skyboxMetadata)); 16 | _meshDensity = serializedObject.FindProperty(nameof(_meshDensity)); 17 | _depthScale = serializedObject.FindProperty(nameof(_depthScale)); 18 | } 19 | 20 | public override void OnInspectorGUI() 21 | { 22 | serializedObject.Update(); 23 | 24 | var skybox = (BlockadeLabsSkyboxMesh)target; 25 | 26 | if (GUILayout.Button("Move Scene Camera to Skybox")) 27 | { 28 | SceneView.lastActiveSceneView.AlignViewToObject(skybox.transform); 29 | } 30 | 31 | GUILayout.Space(16); 32 | 33 | BlockadeGUI.DisableGroup(skybox.BakedMesh, () => 34 | { 35 | EditorGUILayout.PropertyField(_skyboxMetadata); 36 | EditorGUILayout.PropertyField(_meshDensity); 37 | EditorGUILayout.PropertyField(_depthScale); 38 | }); 39 | 40 | GUILayout.Space(16); 41 | 42 | BlockadeGUI.Horizontal(() => 43 | { 44 | BlockadeGUI.DisableGroup(!skybox.HasDepthTexture, () => 45 | { 46 | if (!skybox.BakedMesh && GUILayout.Button("Bake Depth to Mesh")) 47 | { 48 | skybox.BakeMesh(); 49 | EditorUtility.SetDirty(skybox); 50 | } 51 | else if (skybox.BakedMesh && GUILayout.Button("Unbake Depth from Mesh")) 52 | { 53 | skybox.BakedMesh = null; 54 | EditorUtility.SetDirty(skybox); 55 | } 56 | }); 57 | 58 | if (GUILayout.Button("Save Prefab")) 59 | { 60 | skybox.SavePrefab(); 61 | } 62 | }); 63 | 64 | if (serializedObject.ApplyModifiedProperties()) 65 | { 66 | skybox.EditorPropertyChanged(); 67 | } 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /Editor/Inspectors/BlockadeLabsSkyboxMeshEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d2de4c10b8152734587b52d6c1a67406 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Inspectors/SkyboxAIEditor.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | namespace BlockadeLabsSDK.Editor 5 | { 6 | [CustomEditor(typeof(SkyboxAI))] 7 | internal class SkyboxAIEditor : UnityEditor.Editor 8 | { 9 | public override void OnInspectorGUI() 10 | { 11 | serializedObject.Update(); 12 | GUI.enabled = false; 13 | DrawPropertiesExcluding(serializedObject, "m_Script"); 14 | GUI.enabled = true; 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /Editor/Inspectors/SkyboxAIEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b712c348e35b74347a696d79ff0e3f05 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Inspectors/StartScreen.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c20b0aa0a96208b47be9f4fb1fd1a49e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Inspectors/Survey.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5da209aadcd787f4abf82c6470a63955 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/PluginSettings.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEditor; 3 | using UnityEngine; 4 | 5 | namespace BlockadeLabsSDK.Editor 6 | { 7 | internal enum ShowStartScreen 8 | { 9 | Always, 10 | OnUpdate, 11 | Never 12 | } 13 | 14 | [Serializable, CreateAssetMenu(fileName = "PluginSettings", menuName = "BlockadeLabsSDK/PluginSettings")] 15 | internal class PluginSettings : ScriptableObject 16 | { 17 | private const string _settingsGuid = "bb545e472ea14b640936128e690be415"; 18 | 19 | public ShowStartScreen ShowStartScreen = 0; 20 | 21 | private static PluginSettings _settings; 22 | 23 | public void Save() 24 | { 25 | var saveIfDirty = typeof(AssetDatabase).GetMethod("SaveAssetIfDirty", new Type[] { typeof(UnityEngine.Object) }); 26 | if (saveIfDirty != null) 27 | { 28 | EditorUtility.SetDirty(this); 29 | saveIfDirty.Invoke(null, new object[] { this }); 30 | } 31 | } 32 | 33 | public static PluginSettings Get() 34 | { 35 | if (_settings == null) 36 | { 37 | var settingsPath = AssetDatabase.GUIDToAssetPath(_settingsGuid); 38 | _settings = AssetDatabase.LoadAssetAtPath(settingsPath); 39 | } 40 | 41 | return _settings; 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /Editor/PluginSettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 324cc1eaac72b2d42a3808f197864943 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/SkyboxStylePropertyDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e2a12deaa844574f9dd77dd4b367f86 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/VSAttribution.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEditor; 3 | using UnityEngine.Analytics; 4 | 5 | namespace BlockadeLabsSDK.Editor 6 | { 7 | internal static class VSAttribution 8 | { 9 | const int k_VersionId = 4; 10 | const int k_MaxEventsPerHour = 10; 11 | const int k_MaxNumberOfElements = 1000; 12 | 13 | const string k_VendorKey = "unity.vsp-attribution"; 14 | const string k_EventName = "vspAttribution"; 15 | 16 | #if UNITY_2023_2_OR_NEWER 17 | [AnalyticInfo(eventName: k_EventName, vendorKey: k_VendorKey, maxEventsPerHour: k_MaxEventsPerHour, maxNumberOfElements: k_MaxNumberOfElements, version: k_VersionId)] 18 | private class VSAttributionAnalytic : IAnalytic 19 | { 20 | private VSAttributionData _data; 21 | 22 | public VSAttributionAnalytic(VSAttributionData data) 23 | { 24 | _data = data; 25 | } 26 | 27 | public bool TryGatherData(out IAnalytic.IData data, out Exception error) 28 | { 29 | error = null; 30 | data = _data; 31 | return data != null; 32 | } 33 | } 34 | #else 35 | static bool RegisterEvent() 36 | { 37 | AnalyticsResult result = EditorAnalytics.RegisterEventWithLimit(k_EventName, k_MaxEventsPerHour, 38 | k_MaxNumberOfElements, k_VendorKey, k_VersionId); 39 | 40 | var isResultOk = result == AnalyticsResult.Ok; 41 | return isResultOk; 42 | } 43 | #endif 44 | 45 | [Serializable] 46 | struct VSAttributionData 47 | #if UNITY_2023_2_OR_NEWER 48 | : IAnalytic.IData 49 | #endif 50 | { 51 | public string actionName; 52 | public string partnerName; 53 | public string customerUid; 54 | public string extra; 55 | } 56 | 57 | /// 58 | /// Registers and attempts to send a Verified Solutions Attribution event. 59 | /// 60 | /// Name of the action, identifying a place this event was called from. 61 | /// Identifiable Verified Solutions Partner's name. 62 | /// Unique identifier of the customer using Partner's Verified Solution. 63 | public static AnalyticsResult SendAttributionEvent(string actionName, string partnerName, string customerUid) 64 | { 65 | try 66 | { 67 | // Are Editor Analytics enabled ? (Preferences) 68 | if (!EditorAnalytics.enabled) 69 | return AnalyticsResult.AnalyticsDisabled; 70 | 71 | #if !UNITY_2023_2_OR_NEWER 72 | if (!RegisterEvent()) 73 | return AnalyticsResult.InvalidData; 74 | #endif 75 | // Create an expected data object 76 | var eventData = new VSAttributionData 77 | { 78 | actionName = actionName, 79 | partnerName = partnerName, 80 | customerUid = customerUid, 81 | extra = "{}" 82 | }; 83 | #if UNITY_2023_2_OR_NEWER 84 | VSAttributionAnalytic analytic = new VSAttributionAnalytic(eventData); 85 | return EditorAnalytics.SendAnalytic(analytic); 86 | #else 87 | return EditorAnalytics.SendEventWithLimit(k_EventName, eventData, k_VersionId); 88 | #endif 89 | } 90 | catch 91 | { 92 | // Fail silently 93 | return AnalyticsResult.AnalyticsDisabled; 94 | } 95 | } 96 | } 97 | } -------------------------------------------------------------------------------- /Editor/VSAttribution.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d6d4ab922e2bd1846b1f697987cbddcf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Fonts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7bda4eef8b036ca4cbab880a5bac3fba 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Fonts/Inter-Bold SDF.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8390d967844b74a4aa44193980c05a77 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Fonts/Inter-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Fonts/Inter-Bold.ttf -------------------------------------------------------------------------------- /Fonts/Inter-Bold.ttf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db1b178474502ad41b7c13aa6ac3d6df 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontNames: 12 | - Inter 13 | fallbackFontReferences: 14 | - {fileID: 12800000, guid: 08eec90e1e3aaaf40a24d647c53f05cb, type: 3} 15 | - {fileID: 12800000, guid: 1b5ca89b842763248980ff468bb292ea, type: 3} 16 | - {fileID: 12800000, guid: 8a035e6c36c69d3428b9ac4d58b2b07b, type: 3} 17 | customCharacters: 18 | fontRenderingMode: 0 19 | ascentCalculationMode: 1 20 | useLegacyBoundsCalculation: 0 21 | shouldRoundAdvanceValue: 1 22 | userData: 23 | assetBundleName: 24 | assetBundleVariant: 25 | -------------------------------------------------------------------------------- /Fonts/Inter-Medium SDF.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ef9463bd1cc3c64f9adf648c6811a51 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Fonts/Inter-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Fonts/Inter-Medium.ttf -------------------------------------------------------------------------------- /Fonts/Inter-Medium.ttf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 08eec90e1e3aaaf40a24d647c53f05cb 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontNames: 12 | - Inter 13 | fallbackFontReferences: 14 | - {fileID: 12800000, guid: 8a035e6c36c69d3428b9ac4d58b2b07b, type: 3} 15 | customCharacters: 16 | fontRenderingMode: 0 17 | ascentCalculationMode: 1 18 | useLegacyBoundsCalculation: 0 19 | shouldRoundAdvanceValue: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /Fonts/Inter-Regular SDF.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b3bd6c68239f4e743aaae6ab0ff401a5 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Fonts/Inter-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Fonts/Inter-Regular.ttf -------------------------------------------------------------------------------- /Fonts/Inter-Regular.ttf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1b5ca89b842763248980ff468bb292ea 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontNames: 12 | - Inter 13 | fallbackFontReferences: 14 | - {fileID: 12800000, guid: 08eec90e1e3aaaf40a24d647c53f05cb, type: 3} 15 | - {fileID: 12800000, guid: 8a035e6c36c69d3428b9ac4d58b2b07b, type: 3} 16 | customCharacters: 17 | fontRenderingMode: 0 18 | ascentCalculationMode: 1 19 | useLegacyBoundsCalculation: 0 20 | shouldRoundAdvanceValue: 1 21 | userData: 22 | assetBundleName: 23 | assetBundleVariant: 24 | -------------------------------------------------------------------------------- /Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 10bc36b085db9684298ddc31d6029a46 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Metallic HDRP.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a33a9f212df0efa49861b934d17e160f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Metallic URP.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-3313149751083221405 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 5 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 8 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: Metallic URP 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ValidKeywords: 26 | - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 27 | m_InvalidKeywords: [] 28 | m_LightmapFlags: 4 29 | m_EnableInstancingVariants: 0 30 | m_DoubleSidedGI: 0 31 | m_CustomRenderQueue: -1 32 | stringTagMap: 33 | RenderType: Opaque 34 | disabledShaderPasses: [] 35 | m_SavedProperties: 36 | serializedVersion: 3 37 | m_TexEnvs: 38 | - _BaseMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _BumpMap: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _DetailAlbedoMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _DetailMask: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _DetailNormalMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _EmissionMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | - _MainTex: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - _MetallicGlossMap: 67 | m_Texture: {fileID: 0} 68 | m_Scale: {x: 1, y: 1} 69 | m_Offset: {x: 0, y: 0} 70 | - _OcclusionMap: 71 | m_Texture: {fileID: 0} 72 | m_Scale: {x: 1, y: 1} 73 | m_Offset: {x: 0, y: 0} 74 | - _ParallaxMap: 75 | m_Texture: {fileID: 0} 76 | m_Scale: {x: 1, y: 1} 77 | m_Offset: {x: 0, y: 0} 78 | - _SpecGlossMap: 79 | m_Texture: {fileID: 0} 80 | m_Scale: {x: 1, y: 1} 81 | m_Offset: {x: 0, y: 0} 82 | - unity_Lightmaps: 83 | m_Texture: {fileID: 0} 84 | m_Scale: {x: 1, y: 1} 85 | m_Offset: {x: 0, y: 0} 86 | - unity_LightmapsInd: 87 | m_Texture: {fileID: 0} 88 | m_Scale: {x: 1, y: 1} 89 | m_Offset: {x: 0, y: 0} 90 | - unity_ShadowMasks: 91 | m_Texture: {fileID: 0} 92 | m_Scale: {x: 1, y: 1} 93 | m_Offset: {x: 0, y: 0} 94 | m_Ints: [] 95 | m_Floats: 96 | - _AlphaClip: 0 97 | - _Blend: 0 98 | - _BlendOp: 0 99 | - _BumpScale: 1 100 | - _CameraFadingEnabled: 0 101 | - _CameraFarFadeDistance: 2 102 | - _CameraNearFadeDistance: 1 103 | - _ClearCoatMask: 0 104 | - _ClearCoatSmoothness: 0 105 | - _ColorMode: 0 106 | - _Cull: 2 107 | - _Cutoff: 0.5 108 | - _DetailAlbedoMapScale: 1 109 | - _DetailNormalMapScale: 1 110 | - _DistortionBlend: 0.5 111 | - _DistortionEnabled: 0 112 | - _DistortionStrength: 1 113 | - _DistortionStrengthScaled: 0.1 114 | - _DstBlend: 0 115 | - _EnvironmentReflections: 1 116 | - _FlipbookBlending: 0 117 | - _FlipbookMode: 0 118 | - _GlossMapScale: 0.724 119 | - _Glossiness: 0.711 120 | - _GlossyReflections: 1 121 | - _Metallic: 1 122 | - _Mode: 0 123 | - _OcclusionStrength: 1 124 | - _Parallax: 0.02 125 | - _QueueOffset: 0 126 | - _ReceiveShadows: 1 127 | - _Smoothness: 0.572 128 | - _SmoothnessTextureChannel: 1 129 | - _SoftParticlesEnabled: 0 130 | - _SoftParticlesFarFadeDistance: 1 131 | - _SoftParticlesNearFadeDistance: 0 132 | - _SpecularHighlights: 1 133 | - _SrcBlend: 1 134 | - _Surface: 0 135 | - _UVSec: 0 136 | - _WorkflowMode: 1 137 | - _ZWrite: 1 138 | m_Colors: 139 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 140 | - _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} 141 | - _CameraFadeParams: {r: 0, g: 0, b: 0, a: 0} 142 | - _Color: {r: 1, g: 1, b: 1, a: 1} 143 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 144 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} 145 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 146 | m_BuildTextureStacks: [] 147 | -------------------------------------------------------------------------------- /Materials/Metallic URP.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8bb7c7324ab660443a94f630781c80f3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Metallic.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Metallic 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 0.572 64 | - _Glossiness: 0.711 65 | - _GlossyReflections: 1 66 | - _Metallic: 1 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 1 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Materials/Metallic.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d8022719f59796e488cf3a186cb6a708 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Reflective HDRP.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b2e91de1bec1364da5c8b0af7cc8691 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Reflective URP.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-4000994480516955477 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 5 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 8 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: Reflective URP 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ValidKeywords: 26 | - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 27 | m_InvalidKeywords: [] 28 | m_LightmapFlags: 4 29 | m_EnableInstancingVariants: 0 30 | m_DoubleSidedGI: 0 31 | m_CustomRenderQueue: -1 32 | stringTagMap: 33 | RenderType: Opaque 34 | disabledShaderPasses: [] 35 | m_SavedProperties: 36 | serializedVersion: 3 37 | m_TexEnvs: 38 | - _BaseMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _BumpMap: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _DetailAlbedoMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _DetailMask: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _DetailNormalMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _EmissionMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | - _MainTex: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - _MetallicGlossMap: 67 | m_Texture: {fileID: 0} 68 | m_Scale: {x: 1, y: 1} 69 | m_Offset: {x: 0, y: 0} 70 | - _OcclusionMap: 71 | m_Texture: {fileID: 0} 72 | m_Scale: {x: 1, y: 1} 73 | m_Offset: {x: 0, y: 0} 74 | - _ParallaxMap: 75 | m_Texture: {fileID: 0} 76 | m_Scale: {x: 1, y: 1} 77 | m_Offset: {x: 0, y: 0} 78 | - _SpecGlossMap: 79 | m_Texture: {fileID: 0} 80 | m_Scale: {x: 1, y: 1} 81 | m_Offset: {x: 0, y: 0} 82 | - unity_Lightmaps: 83 | m_Texture: {fileID: 0} 84 | m_Scale: {x: 1, y: 1} 85 | m_Offset: {x: 0, y: 0} 86 | - unity_LightmapsInd: 87 | m_Texture: {fileID: 0} 88 | m_Scale: {x: 1, y: 1} 89 | m_Offset: {x: 0, y: 0} 90 | - unity_ShadowMasks: 91 | m_Texture: {fileID: 0} 92 | m_Scale: {x: 1, y: 1} 93 | m_Offset: {x: 0, y: 0} 94 | m_Ints: [] 95 | m_Floats: 96 | - _AlphaClip: 0 97 | - _Blend: 0 98 | - _BlendOp: 0 99 | - _BumpScale: 1 100 | - _CameraFadingEnabled: 0 101 | - _CameraFarFadeDistance: 2 102 | - _CameraNearFadeDistance: 1 103 | - _ClearCoatMask: 0 104 | - _ClearCoatSmoothness: 0 105 | - _ColorMode: 0 106 | - _Cull: 2 107 | - _Cutoff: 0.5 108 | - _DetailAlbedoMapScale: 1 109 | - _DetailNormalMapScale: 1 110 | - _DistortionBlend: 0.5 111 | - _DistortionEnabled: 0 112 | - _DistortionStrength: 1 113 | - _DistortionStrengthScaled: 0.1 114 | - _DstBlend: 0 115 | - _EnvironmentReflections: 1 116 | - _FlipbookBlending: 0 117 | - _FlipbookMode: 0 118 | - _GlossMapScale: 1 119 | - _Glossiness: 0 120 | - _GlossyReflections: 1 121 | - _Metallic: 1 122 | - _Mode: 0 123 | - _OcclusionStrength: 1 124 | - _Parallax: 0.02 125 | - _QueueOffset: 0 126 | - _ReceiveShadows: 1 127 | - _Smoothness: 1 128 | - _SmoothnessTextureChannel: 1 129 | - _SoftParticlesEnabled: 0 130 | - _SoftParticlesFarFadeDistance: 1 131 | - _SoftParticlesNearFadeDistance: 0 132 | - _SpecularHighlights: 1 133 | - _SrcBlend: 1 134 | - _Surface: 0 135 | - _UVSec: 0 136 | - _WorkflowMode: 1 137 | - _ZWrite: 1 138 | m_Colors: 139 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 140 | - _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} 141 | - _CameraFadeParams: {r: 0, g: 0, b: 0, a: 0} 142 | - _Color: {r: 1, g: 1, b: 1, a: 1} 143 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 144 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} 145 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 146 | m_BuildTextureStacks: [] 147 | -------------------------------------------------------------------------------- /Materials/Reflective URP.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0a8b2d771cc014140aafed9ddca5f4e3 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Reflective.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Reflective 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0 65 | - _GlossyReflections: 1 66 | - _Metallic: 1 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 1 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Materials/Reflective.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1f7da3afa71f79746b155cce8adc3814 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Skybox Depth Material.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Skybox Depth Material 11 | m_Shader: {fileID: 4800000, guid: 4ce4c0666f071e1478d991d550d73d50, type: 3} 12 | m_Parent: {fileID: 0} 13 | m_ModifiedSerializedProperties: 0 14 | m_ValidKeywords: [] 15 | m_InvalidKeywords: [] 16 | m_LightmapFlags: 4 17 | m_EnableInstancingVariants: 0 18 | m_DoubleSidedGI: 0 19 | m_CustomRenderQueue: -1 20 | stringTagMap: {} 21 | disabledShaderPasses: [] 22 | m_LockedProperties: 23 | m_SavedProperties: 24 | serializedVersion: 3 25 | m_TexEnvs: 26 | - _BumpMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DepthMap: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DepthTex: 35 | m_Texture: {fileID: 2800000, guid: 06f7a0bb347fbb441b78bb6115882677, type: 2} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _DetailAlbedoMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _DetailMask: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _DetailNormalMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _EmissionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _MainTex: 55 | m_Texture: {fileID: 8900000, guid: 5a127fdf38c688e438b8687fb85a0c6e, type: 3} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _MetallicGlossMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | - _OcclusionMap: 63 | m_Texture: {fileID: 0} 64 | m_Scale: {x: 1, y: 1} 65 | m_Offset: {x: 0, y: 0} 66 | - _ParallaxMap: 67 | m_Texture: {fileID: 0} 68 | m_Scale: {x: 1, y: 1} 69 | m_Offset: {x: 0, y: 0} 70 | m_Ints: 71 | - _DepthMode: 1 72 | m_Floats: 73 | - _BumpScale: 1 74 | - _Cutoff: 0.5 75 | - _DepthCurve: 5 76 | - _DepthScale: 3 77 | - _DetailNormalMapScale: 1 78 | - _DstBlend: 0 79 | - _GlossMapScale: 1 80 | - _Glossiness: 0.5 81 | - _GlossyReflections: 1 82 | - _Max: 1000 83 | - _Metallic: 0 84 | - _Mode: 0 85 | - _OcclusionStrength: 1 86 | - _Parallax: 0.02 87 | - _Scale: 1 88 | - _SmoothnessTextureChannel: 0 89 | - _SpecularHighlights: 1 90 | - _SrcBlend: 1 91 | - _UVSec: 0 92 | - _ZWrite: 1 93 | m_Colors: 94 | - _Color: {r: 1, g: 1, b: 1, a: 1} 95 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 96 | m_BuildTextureStacks: [] 97 | -------------------------------------------------------------------------------- /Materials/Skybox Depth Material.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 503161aa846cabf4e90e8b5fdd5df395 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Skybox Depth Shader Graph Material.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4bbccf70dd877774a9e2158f062b91ff 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Skybox Material.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Skybox Material 11 | m_Shader: {fileID: 103, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ValidKeywords: [] 13 | m_InvalidKeywords: 14 | - _MAPPING_LATITUDE_LONGITUDE_LAYOUT 15 | m_LightmapFlags: 4 16 | m_EnableInstancingVariants: 0 17 | m_DoubleSidedGI: 0 18 | m_CustomRenderQueue: -1 19 | stringTagMap: {} 20 | disabledShaderPasses: [] 21 | m_SavedProperties: 22 | serializedVersion: 3 23 | m_TexEnvs: 24 | - _BumpMap: 25 | m_Texture: {fileID: 0} 26 | m_Scale: {x: 1, y: 1} 27 | m_Offset: {x: 0, y: 0} 28 | - _DepthMap: 29 | m_Texture: {fileID: 0} 30 | m_Scale: {x: 1, y: 1} 31 | m_Offset: {x: 0, y: 0} 32 | - _DepthTex: 33 | m_Texture: {fileID: 2800000, guid: 06f7a0bb347fbb441b78bb6115882677, type: 2} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - _DetailAlbedoMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _DetailMask: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _DetailNormalMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _EmissionMap: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MainTex: 53 | m_Texture: {fileID: 2800000, guid: 5a127fdf38c688e438b8687fb85a0c6e, type: 3} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _MetallicGlossMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _OcclusionMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | - _ParallaxMap: 65 | m_Texture: {fileID: 0} 66 | m_Scale: {x: 1, y: 1} 67 | m_Offset: {x: 0, y: 0} 68 | - _Tex: 69 | m_Texture: {fileID: 8900000, guid: 5a127fdf38c688e438b8687fb85a0c6e, type: 3} 70 | m_Scale: {x: 1, y: 1} 71 | m_Offset: {x: 0, y: 0} 72 | m_Ints: [] 73 | m_Floats: 74 | - _BumpScale: 1 75 | - _Cutoff: 0.5 76 | - _DepthCurve: 5 77 | - _DepthScale: 3 78 | - _DetailNormalMapScale: 1 79 | - _DstBlend: 0 80 | - _Exposure: 1 81 | - _GlossMapScale: 1 82 | - _Glossiness: 0.5 83 | - _GlossyReflections: 1 84 | - _ImageType: 0 85 | - _Layout: 0 86 | - _Mapping: 1 87 | - _Max: 1000 88 | - _Metallic: 0 89 | - _MirrorOnBack: 0 90 | - _Mode: 0 91 | - _OcclusionStrength: 1 92 | - _Parallax: 0.02 93 | - _Rotation: 90 94 | - _Scale: 1 95 | - _SmoothnessTextureChannel: 0 96 | - _SpecularHighlights: 1 97 | - _SrcBlend: 1 98 | - _UVSec: 0 99 | - _ZWrite: 1 100 | m_Colors: 101 | - _Color: {r: 1, g: 1, b: 1, a: 1} 102 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 103 | - _Tint: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} 104 | m_BuildTextureStacks: [] 105 | -------------------------------------------------------------------------------- /Materials/Skybox Material.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8bbc7111fd83de745beb42d92e974968 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Smooth HDRP.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 37854c30487dd13468473b6dc7c69a32 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Smooth URP.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Smooth URP 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ValidKeywords: 13 | - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 14 | m_InvalidKeywords: [] 15 | m_LightmapFlags: 4 16 | m_EnableInstancingVariants: 0 17 | m_DoubleSidedGI: 0 18 | m_CustomRenderQueue: -1 19 | stringTagMap: 20 | RenderType: Opaque 21 | disabledShaderPasses: [] 22 | m_SavedProperties: 23 | serializedVersion: 3 24 | m_TexEnvs: 25 | - _BaseMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _BumpMap: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailAlbedoMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _DetailMask: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _DetailNormalMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _EmissionMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _MainTex: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _MetallicGlossMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _OcclusionMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | - _ParallaxMap: 62 | m_Texture: {fileID: 0} 63 | m_Scale: {x: 1, y: 1} 64 | m_Offset: {x: 0, y: 0} 65 | - _SpecGlossMap: 66 | m_Texture: {fileID: 0} 67 | m_Scale: {x: 1, y: 1} 68 | m_Offset: {x: 0, y: 0} 69 | - unity_Lightmaps: 70 | m_Texture: {fileID: 0} 71 | m_Scale: {x: 1, y: 1} 72 | m_Offset: {x: 0, y: 0} 73 | - unity_LightmapsInd: 74 | m_Texture: {fileID: 0} 75 | m_Scale: {x: 1, y: 1} 76 | m_Offset: {x: 0, y: 0} 77 | - unity_ShadowMasks: 78 | m_Texture: {fileID: 0} 79 | m_Scale: {x: 1, y: 1} 80 | m_Offset: {x: 0, y: 0} 81 | m_Ints: [] 82 | m_Floats: 83 | - _AlphaClip: 0 84 | - _Blend: 0 85 | - _BlendOp: 0 86 | - _BumpScale: 1 87 | - _CameraFadingEnabled: 0 88 | - _CameraFarFadeDistance: 2 89 | - _CameraNearFadeDistance: 1 90 | - _ClearCoatMask: 0 91 | - _ClearCoatSmoothness: 0 92 | - _ColorMode: 0 93 | - _Cull: 2 94 | - _Cutoff: 0.5 95 | - _DetailAlbedoMapScale: 1 96 | - _DetailNormalMapScale: 1 97 | - _DistortionBlend: 0.5 98 | - _DistortionEnabled: 0 99 | - _DistortionStrength: 1 100 | - _DistortionStrengthScaled: 0.1 101 | - _DstBlend: 0 102 | - _EnvironmentReflections: 1 103 | - _FlipbookBlending: 0 104 | - _FlipbookMode: 0 105 | - _GlossMapScale: 0.825 106 | - _Glossiness: 0.773 107 | - _GlossyReflections: 1 108 | - _Metallic: 0 109 | - _Mode: 0 110 | - _OcclusionStrength: 1 111 | - _Parallax: 0.02 112 | - _QueueOffset: 0 113 | - _ReceiveShadows: 1 114 | - _Smoothness: 1 115 | - _SmoothnessTextureChannel: 1 116 | - _SoftParticlesEnabled: 0 117 | - _SoftParticlesFarFadeDistance: 1 118 | - _SoftParticlesNearFadeDistance: 0 119 | - _SpecularHighlights: 1 120 | - _SrcBlend: 1 121 | - _Surface: 0 122 | - _UVSec: 0 123 | - _WorkflowMode: 1 124 | - _ZWrite: 1 125 | m_Colors: 126 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 127 | - _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} 128 | - _CameraFadeParams: {r: 0, g: 0, b: 0, a: 0} 129 | - _Color: {r: 1, g: 1, b: 1, a: 1} 130 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 131 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} 132 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 133 | m_BuildTextureStacks: [] 134 | --- !u!114 &8660057496542117532 135 | MonoBehaviour: 136 | m_ObjectHideFlags: 11 137 | m_CorrespondingSourceObject: {fileID: 0} 138 | m_PrefabInstance: {fileID: 0} 139 | m_PrefabAsset: {fileID: 0} 140 | m_GameObject: {fileID: 0} 141 | m_Enabled: 1 142 | m_EditorHideFlags: 0 143 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 144 | m_Name: 145 | m_EditorClassIdentifier: 146 | version: 5 147 | -------------------------------------------------------------------------------- /Materials/Smooth URP.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dc52ce38d8159cf40b10e3fe4ff52850 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Materials/Smooth.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Smooth 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.773 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 1 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | m_BuildTextureStacks: [] 79 | -------------------------------------------------------------------------------- /Materials/Smooth.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7bd141f82e08a364297a57eff3c8cd59 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Meshes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 81e4008727dbd4746a118295147151b2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Meshes/SkyboxPreviewMesh.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b2537666dbd281c4da9a768322610beb 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 4300000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6d648b699e625f149951fb85114bd5c8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Prefabs/History Item.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5b788d465101b0d4c986e2d8133b18cb 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Prefabs/Style Item.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 170989fda57a8884ca194c78751ca054 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Prefabs/Style Picker Panel.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b1df9709c1db2074aadaa85f60bd0ec8 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0724a9cef21b70c49bdbb8499ab9e4c3 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d77acee651b62e04682e4dd8b8a18053 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/API.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b0a6abd950592454482a4a1b94037384 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/API/BaseResponse.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | 3 | namespace BlockadeLabsSDK 4 | { 5 | public abstract class BaseResponse 6 | { 7 | [JsonIgnore] 8 | public BlockadeLabsClient Client { get; internal set; } 9 | 10 | [JsonIgnore] 11 | public int RateLimit { get; internal set; } 12 | 13 | [JsonIgnore] 14 | public int RateLimitRemaining { get; internal set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Runtime/API/BaseResponse.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5784df448dbc1714485f8440ce8a21ab 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsAuthInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Security.Authentication; 3 | using UnityEngine; 4 | 5 | namespace BlockadeLabsSDK 6 | { 7 | [Serializable] 8 | public sealed class BlockadeLabsAuthInfo 9 | { 10 | public BlockadeLabsAuthInfo(string apiKey) 11 | { 12 | if (string.IsNullOrWhiteSpace(apiKey)) 13 | { 14 | throw new InvalidCredentialException(nameof(apiKey)); 15 | } 16 | 17 | this.apiKey = apiKey; 18 | } 19 | 20 | [SerializeField] 21 | private string apiKey; 22 | 23 | /// 24 | /// The API key, required to access the service. 25 | /// 26 | public string ApiKey => apiKey; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsAuthInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2bea6af75c3d8a441a07b45ed3be1764 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsAuthentication.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1029b71555c08c543846cfa47121ae7d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsBaseEndpoint.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using UnityEngine.Networking; 4 | 5 | namespace BlockadeLabsSDK 6 | { 7 | public abstract class BlockadeLabsBaseEndpoint 8 | { 9 | /// 10 | /// Constructor. 11 | /// 12 | /// 13 | protected BlockadeLabsBaseEndpoint(BlockadeLabsClient client) => this.client = client; 14 | 15 | /// 16 | /// for this endpoint. 17 | /// 18 | /// ReSharper disable once InconsistentNaming 19 | protected readonly BlockadeLabsClient client; 20 | 21 | /// 22 | /// The root endpoint address. 23 | /// 24 | protected abstract string Root { get; } 25 | 26 | protected string GetUrl(string endpoint = "", Dictionary queryParameters = null) 27 | { 28 | var result = string.Format(client.Settings.BaseRequestUrlFormat, $"{Root}{endpoint}"); 29 | 30 | if (queryParameters != null && queryParameters.Count != 0) 31 | { 32 | result += $"?{string.Join("&", queryParameters.Select(parameter => $"{UnityWebRequest.EscapeURL(parameter.Key)}={UnityWebRequest.EscapeURL(parameter.Value)}"))}"; 33 | } 34 | 35 | return result; 36 | } 37 | 38 | private bool enableDebug; 39 | 40 | /// 41 | /// Enables or disables the logging of all http responses of header and body information for this endpoint.
42 | /// WARNING! Enabling this in your production build, could potentially leak sensitive information! 43 | ///
44 | public bool EnableDebug 45 | { 46 | get => enableDebug || client.EnableDebug; 47 | set => enableDebug = value; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsBaseEndpoint.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b5c22ac4f331d14409b22004b01e0ccc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsClient.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using Newtonsoft.Json.Converters; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Security.Authentication; 6 | 7 | namespace BlockadeLabsSDK 8 | { 9 | public sealed class BlockadeLabsClient 10 | { 11 | /// 12 | public BlockadeLabsClient(BlockadeLabsConfiguration configuration) 13 | : this( 14 | configuration != null ? new BlockadeLabsAuthentication(configuration) : BlockadeLabsAuthentication.Default, 15 | configuration != null ? new BlockadeLabsClientSettings(configuration) : BlockadeLabsClientSettings.Default) 16 | { 17 | } 18 | 19 | /// 20 | /// Creates a new client for the BlockadeLabs API, handling auth and allowing for access to various API endpoints. 21 | /// 22 | /// The API authentication information to use for API calls, 23 | /// or to attempt to use the , 24 | /// potentially loading from environment vars or from a config file. 25 | /// Optional, for specifying a proxy domain. 26 | /// Raised when authentication details are missing or invalid. 27 | public BlockadeLabsClient(BlockadeLabsAuthentication authentication = null, BlockadeLabsClientSettings settings = null) 28 | { 29 | Authentication = authentication ?? BlockadeLabsAuthentication.Default; 30 | 31 | if (Authentication is null) 32 | { 33 | throw new AuthenticationException($"Missing {nameof(Authentication)} for {GetType().Name}"); 34 | } 35 | 36 | Settings = settings ?? BlockadeLabsClientSettings.Default; 37 | 38 | if (Settings is null) 39 | { 40 | throw new ArgumentNullException($"Missing {nameof(Settings)} for {GetType().Name}"); 41 | } 42 | 43 | ValidateAuthentication(); 44 | SetupDefaultRequestHeaders(); 45 | 46 | SkyboxEndpoint = new SkyboxEndpoint(this); 47 | #if UNITY_EDITOR 48 | FeedbackEndpoint = new FeedbackEndpoint(this); 49 | #endif 50 | } 51 | 52 | internal void ValidateAuthentication() 53 | { 54 | if (Authentication?.Info == null) 55 | { 56 | throw new InvalidCredentialException($"Invalid {nameof(BlockadeLabsAuthentication)}"); 57 | } 58 | 59 | if (string.IsNullOrWhiteSpace(Authentication?.Info?.ApiKey)) 60 | { 61 | throw new AuthenticationException("You must provide API authentication. Please refer to https://github.com/Blockade-Games/BlockadeLabs-SDK-Unity#authentication for details."); 62 | } 63 | 64 | _hasValidAuthentication = true; 65 | } 66 | 67 | private bool _hasValidAuthentication; 68 | 69 | public bool HasValidAuthentication 70 | { 71 | get => _hasValidAuthentication; 72 | internal set => _hasValidAuthentication = value; 73 | } 74 | 75 | private void SetupDefaultRequestHeaders() 76 | { 77 | DefaultRequestHeaders = new Dictionary 78 | { 79 | #if !UNITY_WEBGL 80 | { "User-Agent", "com.blockadelabs.sdk" }, 81 | #endif 82 | { "x-api-key", Authentication.Info.ApiKey } 83 | }; 84 | } 85 | 86 | internal static JsonSerializerSettings JsonSerializationOptions { get; } = new JsonSerializerSettings() 87 | { 88 | DefaultValueHandling = DefaultValueHandling.Ignore, 89 | Converters = new List 90 | { 91 | new StringEnumConverter() 92 | } 93 | }; 94 | 95 | public BlockadeLabsAuthentication Authentication { get; } 96 | 97 | public BlockadeLabsClientSettings Settings { get; } 98 | 99 | public IReadOnlyDictionary DefaultRequestHeaders { get; private set; } 100 | 101 | public bool EnableDebug { get; set; } 102 | 103 | public SkyboxEndpoint SkyboxEndpoint { get; } 104 | #if UNITY_EDITOR 105 | internal FeedbackEndpoint FeedbackEndpoint { get; } 106 | #endif 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsClient.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e147305cfdc81b49bbc60735588bcd6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsClientSettings.cs: -------------------------------------------------------------------------------- 1 | using System.Linq; 2 | using UnityEngine; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | public sealed class BlockadeLabsClientSettings 7 | { 8 | /// 9 | /// Creates a new instance of with default . 10 | /// 11 | public BlockadeLabsClientSettings() 12 | { 13 | Info = new BlockadeLabsClientSettingsInfo(); 14 | cachedDefault = this; 15 | } 16 | 17 | /// 18 | /// Creates a new instance of with provided . 19 | /// 20 | /// . 21 | public BlockadeLabsClientSettings(BlockadeLabsConfiguration configuration) 22 | { 23 | if (configuration == null) 24 | { 25 | Debug.LogWarning($"This can be speed up by directly passing a {nameof(BlockadeLabsConfiguration)} to the {nameof(BlockadeLabsClientSettings)}.ctr"); 26 | configuration = Resources.LoadAll(string.Empty).FirstOrDefault(asset => asset != null); 27 | } 28 | 29 | if (configuration != null) 30 | { 31 | Info = new BlockadeLabsClientSettingsInfo(configuration.ProxyDomainUrl); 32 | cachedDefault = this; 33 | } 34 | else 35 | { 36 | Info = new BlockadeLabsClientSettingsInfo(); 37 | cachedDefault = this; 38 | } 39 | } 40 | 41 | /// 42 | /// Creates a new instance of with the provided . 43 | /// 44 | /// . 45 | public BlockadeLabsClientSettings(BlockadeLabsClientSettingsInfo clientSettingsInfo) 46 | { 47 | Info = clientSettingsInfo; 48 | cachedDefault = this; 49 | } 50 | 51 | /// 52 | /// Creates a new instance of . 53 | /// 54 | /// Base api domain. 55 | public BlockadeLabsClientSettings(string domain) 56 | { 57 | Info = new BlockadeLabsClientSettingsInfo(domain); 58 | cachedDefault = this; 59 | } 60 | 61 | private static BlockadeLabsClientSettings cachedDefault; 62 | 63 | public static BlockadeLabsClientSettings Default 64 | { 65 | get => cachedDefault ??= new BlockadeLabsClientSettings(configuration: null); 66 | internal set => cachedDefault = value; 67 | } 68 | 69 | public BlockadeLabsClientSettingsInfo Info { get; } 70 | 71 | public string BaseRequestUrlFormat => Info.BaseRequestUrlFormat; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsClientSettings.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf104ab7a3ea362478b8ec2e04fb2459 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsClientSettingsInfo.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace BlockadeLabsSDK 4 | { 5 | public sealed class BlockadeLabsClientSettingsInfo 6 | { 7 | internal const string Https = "https://"; 8 | internal const string DefaultDomain = "backend.blockadelabs.com"; 9 | internal const string DefaultVersion = "v1"; 10 | 11 | /// 12 | /// Creates a new instance of for use with BlockadeLabs. 13 | /// 14 | public BlockadeLabsClientSettingsInfo() 15 | { 16 | Domain = DefaultDomain; 17 | BaseRequest = $"/api/{DefaultVersion}/"; 18 | BaseRequestUrlFormat = $"{Https}{Domain}{BaseRequest}{{0}}"; 19 | } 20 | 21 | /// 22 | /// Creates a new instance of for use with BlockadeLabs. 23 | /// 24 | /// Base api domain. 25 | public BlockadeLabsClientSettingsInfo(string domain) 26 | { 27 | if (string.IsNullOrWhiteSpace(domain)) 28 | { 29 | domain = DefaultDomain; 30 | } 31 | 32 | if (!domain.Contains(".") && 33 | !domain.Contains(":")) 34 | { 35 | throw new ArgumentException($"Invalid parameter \"{nameof(domain)}\""); 36 | } 37 | 38 | Domain = domain.Contains("http") ? domain : $"{Https}{domain}"; 39 | BaseRequest = $"/api/{DefaultVersion}/"; 40 | BaseRequestUrlFormat = $"{Domain}{BaseRequest}{{0}}"; 41 | } 42 | 43 | public string Domain { get; } 44 | 45 | public string BaseRequest { get; } 46 | 47 | public string BaseRequestUrlFormat { get; } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsClientSettingsInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d1e174f860640cb4484f53f349ad3192 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsConfiguration.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace BlockadeLabsSDK 4 | { 5 | [CreateAssetMenu(fileName = nameof(BlockadeLabsConfiguration), menuName = nameof(BlockadeLabsSDK) + "/" + nameof(BlockadeLabsConfiguration), order = 0)] 6 | public sealed class BlockadeLabsConfiguration : ScriptableObject 7 | { 8 | [SerializeField] 9 | [Tooltip("The api key.")] 10 | private string _apiKey; 11 | 12 | public string ApiKey 13 | { 14 | get => _apiKey; 15 | internal set => _apiKey = value; 16 | } 17 | 18 | [SerializeField] 19 | [Tooltip("Optional proxy domain to make requests though.")] 20 | private string _proxyDomainUrl; 21 | 22 | public string ProxyDomainUrl => _proxyDomainUrl; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Runtime/API/BlockadeLabsConfiguration.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f6450748c87a806488763d35adc86c05 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/ExportUtilities.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1559b26e19b1457408db231b44d60fe4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Feedback.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6af9c590c89f3ae49ba611ae6ddf826c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/API/Feedback/FeedbackEndpoint.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 04a675dd12c04a64e9705fc46a3f495b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/IListResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine.Scripting; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | [Preserve] 7 | public interface IListResponse 8 | where TObject : BaseResponse 9 | { 10 | [Preserve] 11 | IReadOnlyList Items { get; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Runtime/API/IListResponse.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c898da58e94497f44ad4a0f74dc0909f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Response.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1bd834d7d46464f4e92114c3effe49fe 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/ResponseExtensions.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.CompilerServices; 2 | using UnityEngine; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | internal static class ResponseExtensions 7 | { 8 | private const string RateLimit = "X-RateLimit-Limit"; 9 | private const string RateLimitRemaining = "X-RateLimit-Remaining"; 10 | 11 | internal static void SetResponseData(this BaseResponse response, RestResponse restResponse, BlockadeLabsClient client) 12 | { 13 | if (response is IListResponse listResponse) 14 | { 15 | foreach (var item in listResponse.Items) 16 | { 17 | SetResponseData(item, restResponse, client); 18 | } 19 | } 20 | 21 | response.Client = client; 22 | 23 | if (restResponse.Headers == null || restResponse.Headers.Count == 0) { return; } 24 | 25 | if (restResponse.Headers.TryGetValue(RateLimit, out var rateLimit) && 26 | int.TryParse(rateLimit, out var rateLimitValue)) 27 | { 28 | response.RateLimit = rateLimitValue; 29 | } 30 | 31 | if (restResponse.Headers.TryGetValue(RateLimitRemaining, out var rateLimitRemaining) && 32 | int.TryParse(rateLimitRemaining, out var rateLimitRemainingValue)) 33 | { 34 | response.RateLimitRemaining = rateLimitRemainingValue; 35 | } 36 | } 37 | 38 | /// 39 | /// Validates the and will throw a if the response is unsuccessful. 40 | /// 41 | /// . 42 | /// Print debug information of . 43 | /// Optional, . 44 | /// 45 | internal static void Validate(this RestResponse response, bool debug = false, [CallerMemberName] string methodName = null) 46 | { 47 | if (!response.Successful) 48 | { 49 | throw new RestException(response); 50 | } 51 | 52 | if (debug) 53 | { 54 | Debug.Log(response.ToString(methodName)); 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Runtime/API/ResponseExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb3bb76c7a1584448b598f57a10c8c4f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Rest.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 775709091e1f2414dbb86dcc3ebafdc7 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/RestException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace BlockadeLabsSDK 4 | { 5 | public sealed class RestException : Exception 6 | { 7 | public RestException(RestResponse response, string message = null, Exception innerException = null) 8 | : base(string.IsNullOrWhiteSpace(message) ? response.ToString() : message, innerException) 9 | { 10 | RestResponse = response; 11 | } 12 | 13 | public RestResponse RestResponse { get; } 14 | } 15 | } -------------------------------------------------------------------------------- /Runtime/API/RestException.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1c8574259e82dee4293c4d33baa742ae 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd42829b6acc55b4388e8c9ea8994ca1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/DefaultExportOptions.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine.Scripting; 2 | 3 | namespace BlockadeLabsSDK 4 | { 5 | [Preserve] 6 | public static class DefaultExportOptions 7 | { 8 | [Preserve] 9 | public static SkyboxExportOption Equirectangular_JPG { get; } = new SkyboxExportOption(1, "JPG", SkyboxExportOption.Equirectangular_JPG, false); 10 | 11 | [Preserve] 12 | public static SkyboxExportOption Equirectangular_PNG { get; } = new SkyboxExportOption(2, "PNG", SkyboxExportOption.Equirectangular_PNG, false); 13 | 14 | [Preserve] 15 | public static SkyboxExportOption CubeMap_Roblox_PNG { get; } = new SkyboxExportOption(3, "Cube Map - Roblox", SkyboxExportOption.CubeMap_Roblox_PNG, true); 16 | 17 | [Preserve] 18 | public static SkyboxExportOption HDRI_HDR { get; } = new SkyboxExportOption(4, "HDRI HDR", SkyboxExportOption.HDRI_HDR, true); 19 | 20 | [Preserve] 21 | public static SkyboxExportOption HDRI_EXR { get; } = new SkyboxExportOption(5, "HDRI EXR", SkyboxExportOption.HDRI_EXR, true); 22 | 23 | [Preserve] 24 | public static SkyboxExportOption DepthMap_PNG { get; } = new SkyboxExportOption(6, "Depth Map", SkyboxExportOption.DepthMap_PNG, true); 25 | 26 | [Preserve] 27 | public static SkyboxExportOption Video_LandScape_MP4 { get; } = new SkyboxExportOption(7, "Video Landscape", SkyboxExportOption.Video_LandScape_MP4, true); 28 | 29 | [Preserve] 30 | public static SkyboxExportOption Video_Portrait_MP4 { get; } = new SkyboxExportOption(8, "Video Portrait", SkyboxExportOption.Video_Portrait_MP4, true); 31 | 32 | [Preserve] 33 | public static SkyboxExportOption Video_Square_MP4 { get; } = new SkyboxExportOption(9, "Video Square", SkyboxExportOption.Video_Square_MP4, true); 34 | 35 | [Preserve] 36 | public static SkyboxExportOption CubeMap_PNG { get; } = new SkyboxExportOption(10, "Cube Map - Default", SkyboxExportOption.CubeMap_PNG, true); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/DefaultExportOptions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 50a5f4022a445bf4e9ab1596dcb745e6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/IStatus.cs: -------------------------------------------------------------------------------- 1 | namespace BlockadeLabsSDK 2 | { 3 | internal interface IStatus 4 | { 5 | Status Status { get; } 6 | } 7 | } -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/IStatus.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f3b56deff924e0549858da7a5dc2a728 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxEndpoint.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f83494a01eb70624d8d6fd9b09c0cf05 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxExportOption.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UnityEngine.Scripting; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | [Preserve] 7 | public sealed class SkyboxExportOption : BaseResponse 8 | { 9 | public const string Equirectangular_JPG = "equirectangular-jpg"; 10 | public const string Equirectangular_PNG = "equirectangular-png"; 11 | public const string CubeMap_Roblox_PNG = "cube-map-roblox-png"; 12 | public const string HDRI_HDR = "hdri-hdr"; 13 | public const string HDRI_EXR = "hdri-exr"; 14 | public const string DepthMap_PNG = "depth-map-png"; 15 | public const string Video_LandScape_MP4 = "video-landscape-mp4"; 16 | public const string Video_Portrait_MP4 = "video-portrait-mp4"; 17 | public const string Video_Square_MP4 = "video-square-mp4"; 18 | public const string CubeMap_PNG = "cube-map-default-png"; 19 | 20 | [Preserve] 21 | [JsonConstructor] 22 | internal SkyboxExportOption( 23 | [JsonProperty("id")] int id, 24 | [JsonProperty("name")] string name, 25 | [JsonProperty("key")] string key, 26 | [JsonProperty("isPremium")] bool isPremium) 27 | { 28 | Name = name; 29 | Id = id; 30 | Key = key; 31 | IsPremium = isPremium; 32 | } 33 | 34 | [Preserve] 35 | [JsonProperty("name")] 36 | public string Name { get; } 37 | 38 | [Preserve] 39 | [JsonProperty("id")] 40 | public int Id { get; } 41 | 42 | [Preserve] 43 | [JsonProperty("key")] 44 | public string Key { get; } 45 | 46 | [Preserve] 47 | [JsonProperty("isPremium")] 48 | public bool IsPremium { get; } 49 | 50 | public static implicit operator string(SkyboxExportOption option) => option?.Key; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxExportOption.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 173667788fd30744e85a0462a1e9bd7a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxExportRequest.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using Newtonsoft.Json.Converters; 3 | using System; 4 | using UnityEngine.Scripting; 5 | 6 | namespace BlockadeLabsSDK 7 | { 8 | [Preserve] 9 | public sealed class SkyboxExportRequest : BaseResponse, IStatus 10 | { 11 | [Preserve] 12 | [JsonConstructor] 13 | internal SkyboxExportRequest( 14 | [JsonProperty("id")] string id, 15 | [JsonProperty("file_url")] string fileUrl, 16 | [JsonProperty("skybox_obfuscated_id")] string skyboxObfuscatedId, 17 | [JsonProperty("type")] string type, 18 | [JsonProperty("type_id")] int typeId, 19 | [JsonProperty("status")] Status status, 20 | [JsonProperty("queue_position")] int queuePosition, 21 | [JsonProperty("error_message")] string errorMessage, 22 | [JsonProperty("pusher_channel")] string pusherChannel, 23 | [JsonProperty("pusher_event")] string pusherEvent, 24 | [JsonProperty("webhook_url")] string webhookUrl, 25 | [JsonProperty("created_at")] DateTime createdAt) 26 | { 27 | Id = id; 28 | FileUrl = fileUrl; 29 | SkyboxObfuscatedId = skyboxObfuscatedId; 30 | Type = type; 31 | TypeId = typeId; 32 | Status = status; 33 | QueuePosition = queuePosition; 34 | ErrorMessage = errorMessage; 35 | PusherChannel = pusherChannel; 36 | PusherEvent = pusherEvent; 37 | WebhookUrl = webhookUrl; 38 | CreatedAt = createdAt; 39 | } 40 | 41 | [Preserve] 42 | [JsonProperty("id")] 43 | public string Id { get; } 44 | 45 | [Preserve] 46 | [JsonProperty("file_url")] 47 | public string FileUrl { get; } 48 | 49 | [Preserve] 50 | [JsonProperty("skybox_obfuscated_id")] 51 | public string SkyboxObfuscatedId { get; } 52 | 53 | [Preserve] 54 | [JsonProperty("type")] 55 | public string Type { get; } 56 | 57 | [Preserve] 58 | [JsonProperty("type_id")] 59 | public int TypeId { get; } 60 | 61 | [Preserve] 62 | [JsonProperty("status")] 63 | [JsonConverter(typeof(StringEnumConverter))] 64 | public Status Status { get; } 65 | 66 | [Preserve] 67 | [JsonProperty("queue_position")] 68 | public int QueuePosition { get; } 69 | 70 | [Preserve] 71 | [JsonProperty("error_message")] 72 | public string ErrorMessage { get; } 73 | 74 | [Preserve] 75 | [JsonProperty("pusher_channel")] 76 | public string PusherChannel { get; } 77 | 78 | [Preserve] 79 | [JsonProperty("pusher_event")] 80 | public string PusherEvent { get; } 81 | 82 | [Preserve] 83 | [JsonProperty("webhook_url")] 84 | public string WebhookUrl { get; } 85 | 86 | [Preserve] 87 | [JsonProperty("created_at")] 88 | public DateTime CreatedAt { get; } 89 | 90 | [Preserve] 91 | public static implicit operator string(SkyboxExportRequest request) => request.Id; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxExportRequest.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bbeb71fdd2ade994d8c129451f84e3e1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxHistory.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System.Collections.Generic; 3 | using UnityEngine.Scripting; 4 | 5 | namespace BlockadeLabsSDK 6 | { 7 | [Preserve] 8 | public sealed class SkyboxHistory : BaseResponse, IListResponse 9 | { 10 | [Preserve] 11 | [JsonConstructor] 12 | internal SkyboxHistory( 13 | [JsonProperty("data")] List skyboxes, 14 | [JsonProperty("totalCount")] int totalCount, 15 | [JsonProperty("has_more")] bool hasMore) 16 | { 17 | Items = skyboxes; 18 | TotalCount = totalCount; 19 | HasMore = hasMore; 20 | } 21 | 22 | [Preserve] 23 | [JsonProperty("totalCount")] 24 | public int TotalCount { get; } 25 | 26 | [Preserve] 27 | [JsonProperty("has_more")] 28 | public bool HasMore { get; } 29 | 30 | [Preserve] 31 | [JsonProperty("data")] 32 | public IReadOnlyList Items { get; } 33 | 34 | [Preserve] 35 | [JsonIgnore] 36 | public IReadOnlyList Skyboxes => Items; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxHistory.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fac4990fb3ffac14f8643b295fd18909 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxHistoryParameters.cs: -------------------------------------------------------------------------------- 1 | namespace BlockadeLabsSDK 2 | { 3 | public sealed class SkyboxHistoryParameters 4 | { 5 | /// 6 | /// Filter by status.
7 | /// Options: all, pending, dispatched, processing, complete, abort, error (default: all) 8 | ///
9 | public Status? StatusFilter { get; set; } 10 | 11 | /// 12 | /// Number of items to be returned per page (default: 18) 13 | /// 14 | public int? Limit { get; set; } 15 | 16 | /// 17 | /// Page number (default: 0) 18 | /// 19 | public int? Offset { get; set; } 20 | 21 | /// 22 | /// Sort order. Options: ASC, DESC (default: DESC) 23 | /// 24 | public SortOrder? Order { get; set; } 25 | 26 | /// 27 | /// Filter by id 28 | /// 29 | public int? ImagineId { get; set; } 30 | 31 | /// 32 | /// Filter by title or prompt 33 | /// 34 | public string QueryFilter { get; set; } 35 | 36 | /// 37 | /// Filter by generator 38 | /// 39 | public string GeneratorFilter { get; set; } 40 | 41 | /// 42 | /// Filter by favorites only 43 | /// 44 | public bool? FavoritesOnly { get; set; } = null; 45 | 46 | /// 47 | /// Filter by API generation type. Options are 'all' or 'web-ui' 48 | /// 49 | public int? GeneratedBy { get; set; } = null; 50 | 51 | /// 52 | /// Filter by Skybox Style Id. Defaults to any. 53 | /// 54 | public int? SkyboxStyleId { get; set; } = null; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxHistoryParameters.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64ac47daa5bc0ac48a71111aa7076d10 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68a5e24d83add664a9f10fa2ed0bd8d5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxModel.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.Serialization; 2 | 3 | namespace BlockadeLabsSDK 4 | { 5 | public enum SkyboxModel 6 | { 7 | [EnumMember(Value = "Model 2")] 8 | Model2 = 2, 9 | [EnumMember(Value = "Model 3")] 10 | Model3 = 3 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxModel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4cec116f64070a642919646df1de3090 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxRequest.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4f1c7806818d04a4d855a66c9406287f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SkyboxStyle.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b98d69741d396a64caa3982357d26a6f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SortOrder.cs: -------------------------------------------------------------------------------- 1 | namespace BlockadeLabsSDK 2 | { 3 | public enum SortOrder 4 | { 5 | Desc, 6 | Asc 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/SortOrder.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 10fa923708433724f8dc7c4c5fed5f82 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/Status.cs: -------------------------------------------------------------------------------- 1 | namespace BlockadeLabsSDK 2 | { 3 | public enum Status 4 | { 5 | All, 6 | Pending, 7 | Dispatched, 8 | Processing, 9 | Complete, 10 | Abort, 11 | Error 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Runtime/API/Skyboxes/Status.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 77e17daa9e59b2f43bebcee9ca08eeaf 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b80e43d6834b2843aeb0fb27b7f8691 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Extensions/AssetUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02e202da6ac7c4241b88471af7863e36 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions/AwaiterExtensions.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine.Networking; 2 | 3 | namespace BlockadeLabsSDK.Extensions 4 | { 5 | internal static class AwaiterExtensions 6 | { 7 | public static UnityWebRequestAwaiter GetAwaiter(this UnityWebRequestAsyncOperation asyncOp) 8 | => new UnityWebRequestAwaiter(asyncOp); 9 | 10 | public static UnityMainThreadAwaiter GetAwaiter(this UnityMainThread _) 11 | => new UnityMainThreadAwaiter(); 12 | } 13 | } -------------------------------------------------------------------------------- /Runtime/Extensions/AwaiterExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db4839b77e6257f4f82f6845c608ad61 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions/BakeDepth.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | internal static class BakeDepth 7 | { 8 | public static Mesh Bake(Mesh tetrahedronMesh, Texture2D depthMap, float depthScale) 9 | { 10 | var uvs = tetrahedronMesh.uv; 11 | var newVertices = tetrahedronMesh.vertices; 12 | var vertMap = new Dictionary(); 13 | 14 | if (!depthMap.isReadable) 15 | { 16 | throw new System.Exception("Depth map is not readable!"); 17 | } 18 | 19 | for (int i = 0; i < tetrahedronMesh.vertexCount; i++) 20 | { 21 | var color = depthMap.GetPixelBilinear(uvs[i].x, uvs[i].y); 22 | if (QualitySettings.activeColorSpace == ColorSpace.Linear) 23 | { 24 | color = color.linear; 25 | } 26 | 27 | var depth = color.g; 28 | newVertices[i] = ComputeDepth(uvs[i], newVertices[i], depth, depthScale); 29 | } 30 | 31 | var mesh = new Mesh(); 32 | mesh.name = tetrahedronMesh.name + "_DepthBaked"; 33 | mesh.indexFormat = tetrahedronMesh.indexFormat; 34 | mesh.SetVertices(newVertices); 35 | mesh.SetUVs(0, uvs); 36 | mesh.SetTriangles(tetrahedronMesh.GetTriangles(0), 0); 37 | mesh.RecalculateNormals(); 38 | mesh.RecalculateTangents(); 39 | mesh.RecalculateBounds(); 40 | return mesh; 41 | } 42 | 43 | private static Vector3 ComputeDepth(Vector2 uv, Vector3 input, float depth, float depthScale) 44 | { 45 | float displacement = Mathf.Clamp(1.0f / depth + 10 / depthScale, 0, depthScale); 46 | return input.normalized * displacement; 47 | } 48 | } 49 | } -------------------------------------------------------------------------------- /Runtime/Extensions/BakeDepth.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 696eb5ac3cf22d341a192a5852eb5205 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions/ObjectUtils.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace BlockadeLabsSDK 4 | { 5 | internal static class ObjectUtils 6 | { 7 | public static void Destroy(this Object obj) 8 | { 9 | #if UNITY_EDITOR 10 | // check if Obj is in asset database. Don't destroy it if it is 11 | if (UnityEditor.AssetDatabase.Contains(obj)) 12 | { 13 | return; 14 | } 15 | #endif 16 | 17 | if (Application.isPlaying) 18 | { 19 | Object.Destroy(obj); 20 | } 21 | else 22 | { 23 | Object.DestroyImmediate(obj); 24 | } 25 | } 26 | 27 | public static void Destroy(this Object[] objects) 28 | { 29 | foreach (var obj in objects) 30 | { 31 | if (obj) 32 | { 33 | Destroy(obj); 34 | } 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /Runtime/Extensions/ObjectUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6d07be7c2d9dfa34991fe8c9e8ee5b9f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions/PanoramicToCubemap.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b85a42ccf66526a429ca45633c7a35a6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions/StringExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Security.Cryptography; 3 | using System.Text; 4 | using System.Threading; 5 | 6 | namespace BlockadeLabsSDK 7 | { 8 | internal static class StringExtensions 9 | { 10 | public static string ToTitleCase(this string @string) 11 | { 12 | var cultureInfo = Thread.CurrentThread.CurrentCulture; 13 | var textInfo = cultureInfo.TextInfo; 14 | return textInfo.ToTitleCase(@string); 15 | } 16 | 17 | public static Guid GenerateGuid(string @string) 18 | { 19 | using MD5 md5 = MD5.Create(); 20 | return new Guid(md5.ComputeHash(Encoding.Default.GetBytes(@string))); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Runtime/Extensions/StringExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c90835cabaef124181f8514f54015fe 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions/UnityMainThread.cs: -------------------------------------------------------------------------------- 1 | namespace BlockadeLabsSDK.Extensions 2 | { 3 | internal struct UnityMainThread { } 4 | } -------------------------------------------------------------------------------- /Runtime/Extensions/UnityMainThread.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d7016c1a106eef1429520717de94a995 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions/UnityMainThreadAwaiter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.CompilerServices; 3 | 4 | namespace BlockadeLabsSDK.Extensions 5 | { 6 | internal class UnityMainThreadAwaiter : INotifyCompletion 7 | { 8 | public bool IsCompleted => true; 9 | 10 | public void GetResult() { } 11 | 12 | public void OnCompleted(Action continuation) 13 | => UnitySynchronizationContext.MainThreadContext.Post(_ => continuation(), null); 14 | } 15 | } -------------------------------------------------------------------------------- /Runtime/Extensions/UnityMainThreadAwaiter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f11b3af82d9d3ee43a7d335420f60754 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions/UnitySynchronizationContext.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | 3 | namespace BlockadeLabsSDK.Extensions 4 | { 5 | internal static class UnitySynchronizationContext 6 | { 7 | public static SynchronizationContext MainThreadContext { get; private set; } 8 | 9 | #if UNITY_EDITOR 10 | [UnityEditor.InitializeOnLoadMethod] 11 | #else 12 | [UnityEngine.RuntimeInitializeOnLoadMethod(UnityEngine.RuntimeInitializeLoadType.AfterAssembliesLoaded)] 13 | #endif 14 | public static void Initialize() 15 | { 16 | MainThreadContext = SynchronizationContext.Current; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /Runtime/Extensions/UnitySynchronizationContext.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f2bcaadba1d40f4428f6f755850789f9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Extensions/UnityWebRequestAwaiter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.CompilerServices; 3 | using UnityEngine; 4 | using UnityEngine.Networking; 5 | 6 | namespace BlockadeLabsSDK.Extensions 7 | { 8 | internal class UnityWebRequestAwaiter : INotifyCompletion 9 | { 10 | private UnityWebRequestAsyncOperation _asyncOp; 11 | private Action _continuation; 12 | 13 | public UnityWebRequestAwaiter(UnityWebRequestAsyncOperation asyncOp) 14 | { 15 | _asyncOp = asyncOp; 16 | asyncOp.completed += OnRequestCompleted; 17 | } 18 | 19 | public bool IsCompleted => _asyncOp.isDone; 20 | 21 | public void GetResult() { } 22 | 23 | public void OnCompleted(Action continuation) 24 | { 25 | _continuation = continuation; 26 | } 27 | 28 | private void OnRequestCompleted(AsyncOperation obj) 29 | { 30 | _continuation(); 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Runtime/Extensions/UnityWebRequestAwaiter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d300bec0afbcbe46ab7ce456e2676fb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/SkyboxAI.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using UnityEngine; 3 | 4 | #if UNITY_HDRP 5 | using UnityEngine.Rendering; 6 | #endif 7 | 8 | namespace BlockadeLabsSDK 9 | { 10 | public sealed class SkyboxAI : ScriptableObject 11 | { 12 | [SerializeField] 13 | private int _id; 14 | 15 | [JsonProperty("id")] 16 | public int Id 17 | { 18 | get => _id; 19 | internal set => _id = value; 20 | } 21 | 22 | [SerializeField] 23 | private string _obfuscatedId; 24 | 25 | [JsonProperty("obfuscated_id")] 26 | public string ObfuscatedId 27 | { 28 | get => _obfuscatedId; 29 | internal set => _obfuscatedId = value; 30 | } 31 | 32 | [SerializeField] 33 | private int _skyboxStyleId; 34 | 35 | [JsonProperty("skybox_style_id")] 36 | public int SkyboxStyleId 37 | { 38 | get => _skyboxStyleId; 39 | internal set => _skyboxStyleId = value; 40 | } 41 | 42 | [SerializeField] 43 | private string _skyboxStyleName; 44 | 45 | [JsonProperty("skybox_style_name")] 46 | public string SkyboxStyleName 47 | { 48 | get => _skyboxStyleName; 49 | internal set => _skyboxStyleName = value; 50 | } 51 | 52 | [SerializeField] 53 | private string _type; 54 | 55 | [JsonProperty("type")] 56 | public string Type 57 | { 58 | get => _type; 59 | internal set => _type = value; 60 | } 61 | 62 | [SerializeField] 63 | private Material _depthMaterial; 64 | 65 | public Material DepthMaterial 66 | { 67 | get => _depthMaterial; 68 | internal set => _depthMaterial = value; 69 | } 70 | 71 | [SerializeField] 72 | private Material _skyboxMaterial; 73 | 74 | public Material SkyboxMaterial 75 | { 76 | get => _skyboxMaterial; 77 | internal set => _skyboxMaterial = value; 78 | } 79 | 80 | [SerializeField] 81 | private Texture2D _depthTexture; 82 | 83 | public Texture2D DepthTexture 84 | { 85 | get => _depthTexture; 86 | internal set => _depthTexture = value; 87 | } 88 | 89 | [SerializeField] 90 | private Cubemap _skyboxTexture; 91 | 92 | public Cubemap SkyboxTexture 93 | { 94 | get => _skyboxTexture; 95 | internal set => _skyboxTexture = value; 96 | } 97 | 98 | #if UNITY_HDRP 99 | [SerializeField] 100 | private VolumeProfile _volumeProfile; 101 | 102 | public VolumeProfile VolumeProfile 103 | { 104 | get => _volumeProfile; 105 | internal set => _volumeProfile = value; 106 | } 107 | #endif // UNITY_HDRP 108 | 109 | [SerializeField] 110 | private string _prompt; 111 | public string Prompt 112 | { 113 | get => _prompt; 114 | internal set => _prompt = value; 115 | } 116 | 117 | [SerializeField] 118 | private string _negativeText; 119 | public string NegativeText 120 | { 121 | get => _negativeText; 122 | internal set => _negativeText = value; 123 | } 124 | 125 | [SerializeField] 126 | private SkyboxModel _model; 127 | public SkyboxModel Model 128 | { 129 | get => _model; 130 | internal set => _model = value; 131 | } 132 | 133 | internal void SetMetadata(SkyboxInfo skybox) 134 | { 135 | _id = skybox.Id; 136 | _obfuscatedId = skybox.ObfuscatedId; 137 | _skyboxStyleId = skybox.SkyboxStyleId; 138 | _skyboxStyleName = skybox.SkyboxStyleName; 139 | _type = skybox.Type; 140 | _prompt = skybox.Prompt; 141 | _negativeText = skybox.NegativeText; 142 | _model = skybox.Model; 143 | } 144 | 145 | public static implicit operator SkyboxAI(SkyboxInfo skybox) 146 | { 147 | var skyboxAI = CreateInstance(); 148 | skyboxAI.SetMetadata(skybox); 149 | return skyboxAI; 150 | } 151 | } 152 | } -------------------------------------------------------------------------------- /Runtime/SkyboxAI.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 39bfbdf0ad435014ea07101ec3405358 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/TetrahedronMesh.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3a885dc6cb55c4c45aff4cd20b019cb9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 147b2ce3d44b7234abed584a8ba256f2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/UI/AspectLayoutElement.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | public class AspectLayoutElement : MonoBehaviour, ILayoutElement 7 | { 8 | [SerializeField] 9 | private float _minWidth = -1; 10 | public float minWidth => _minWidth; 11 | 12 | [SerializeField] 13 | private float _preferredWidth = -1; 14 | public float preferredWidth => _preferredWidth; 15 | 16 | [SerializeField] 17 | private float _flexibleWidth = -1; 18 | public float flexibleWidth => _flexibleWidth; 19 | 20 | [SerializeField] 21 | private float _heightToWidth = 1; 22 | public float heightToWidth 23 | { 24 | get => _heightToWidth; 25 | set => _heightToWidth = value; 26 | } 27 | 28 | [SerializeField] 29 | private int _layoutPriority = 1; 30 | public int layoutPriority => _layoutPriority; 31 | 32 | public float minHeight => _minWidth * _heightToWidth; 33 | public float preferredHeight => GetComponent().rect.width * _heightToWidth; 34 | public float flexibleHeight => 0; 35 | 36 | public void CalculateLayoutInputHorizontal() { } 37 | public void CalculateLayoutInputVertical() { } 38 | } 39 | } -------------------------------------------------------------------------------- /Runtime/UI/AspectLayoutElement.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8b8cfe3174793ca439921a525dd2ad19 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/BlockadeDemoCamera.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 387d38be7b7424643a29db956f58439b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/BlockadeLabsSkyboxGenerator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80c37ee5440861a47884a14ba990aa23 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/BlockadeLabsSkyboxMesh.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86b6b12deafaac649a9cb00122bc91dc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/DialogBox.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using TMPro; 3 | using UnityEngine; 4 | using UnityEngine.UI; 5 | 6 | namespace BlockadeLabsSDK 7 | { 8 | public class DialogBox : MonoBehaviour 9 | { 10 | [SerializeField] 11 | private TextMeshProUGUI _headlineText; 12 | 13 | [SerializeField] 14 | private TextMeshProUGUI _bodyText; 15 | 16 | [SerializeField] 17 | private Button _confirmButton; 18 | 19 | [SerializeField] 20 | private Button _cancelButton; 21 | 22 | [SerializeField] 23 | private GameObject _scrim; 24 | 25 | public void ShowDialog(string headline, string body, Action onConfirm, Action onCancel = null) 26 | { 27 | _scrim.SetActive(true); 28 | gameObject.SetActive(true); 29 | _headlineText.text = $"{headline}"; 30 | _bodyText.text = body; 31 | _confirmButton.onClick.AddListener(() => 32 | { 33 | onConfirm.Invoke(); 34 | HideDialog(); 35 | }); 36 | _cancelButton.gameObject.SetActive(onCancel != null); 37 | 38 | if (onCancel != null) 39 | { 40 | _cancelButton.onClick.AddListener(() => 41 | { 42 | onCancel.Invoke(); 43 | HideDialog(); 44 | }); 45 | } 46 | } 47 | 48 | private void HideDialog() 49 | { 50 | _confirmButton.onClick.RemoveAllListeners(); 51 | _cancelButton.onClick.RemoveAllListeners(); 52 | _scrim.SetActive(false); 53 | gameObject.SetActive(false); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Runtime/UI/DialogBox.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bdf9913d62457fd479662a6dc2754249 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/DisabledColor.cs: -------------------------------------------------------------------------------- 1 | using TMPro; 2 | using UnityEngine; 3 | using UnityEngine.UI; 4 | 5 | namespace BlockadeLabsSDK 6 | { 7 | public class DisabledColor : MonoBehaviour 8 | { 9 | [SerializeField] 10 | private Color _color = Color.gray; 11 | public Color Color 12 | { 13 | get { return _color; } 14 | set 15 | { 16 | _color = value; 17 | UpdateColor(); 18 | } 19 | } 20 | 21 | [SerializeField] 22 | private bool _disabled; 23 | public bool Disabled 24 | { 25 | get { return _disabled; } 26 | set 27 | { 28 | _disabled = value; 29 | UpdateColor(); 30 | } 31 | } 32 | 33 | private TMP_Text _text; 34 | private Image _image; 35 | private Color _enabledColor; 36 | 37 | private void Awake() 38 | { 39 | _text = GetComponent(); 40 | _image = GetComponent(); 41 | _enabledColor = _text?.color ?? _image?.color ?? Color.white; 42 | UpdateColor(); 43 | } 44 | 45 | private void UpdateColor() 46 | { 47 | if (_text != null) 48 | { 49 | _text.color = _disabled ? _color : _enabledColor; 50 | } 51 | 52 | if (_image != null) 53 | { 54 | _image.color = _disabled ? _color : _enabledColor; 55 | } 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /Runtime/UI/DisabledColor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7fd34cb3c86cfe14380d449363cfbe3a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/DpiFixer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | [ExecuteAlways] 7 | internal class DpiFixer : MonoBehaviour 8 | { 9 | private CanvasScaler _canvasScaler; 10 | 11 | private void Start() 12 | { 13 | _canvasScaler = GetComponent(); 14 | InvokeRepeating(nameof(FixDpi), 0f, 1f); 15 | } 16 | 17 | private void FixDpi() 18 | { 19 | var dpi = Screen.dpi; 20 | if (dpi < 1) 21 | { 22 | dpi = 96; 23 | } 24 | 25 | var scale = dpi / 96f; 26 | 27 | #if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX // Retina display fix 28 | scale *= 0.75f; 29 | #endif 30 | 31 | _canvasScaler.scaleFactor = scale; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Runtime/UI/DpiFixer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c56b4df00b941f3429d09d6a9e3ab423 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/DynamicMaterial.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Rendering; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | // Automatically selects the right material based on render pipeline and provides helpers for setting the color. 7 | [ExecuteAlways] 8 | internal class DynamicMaterial : MonoBehaviour 9 | { 10 | public Material Standard; 11 | public Material URP; 12 | public Material HDRP; 13 | 14 | private MeshRenderer _meshRenderer; 15 | 16 | void OnEnable() 17 | { 18 | UpdateMeshRenderer(); 19 | if (_meshRenderer) 20 | { 21 | #if UNITY_2023_1_OR_NEWER 22 | if (GraphicsSettings.defaultRenderPipeline?.GetType().Name.Contains("HDRenderPipelineAsset") ?? false) 23 | { 24 | _meshRenderer.sharedMaterial = HDRP; 25 | } 26 | else if (GraphicsSettings.defaultRenderPipeline?.GetType().Name.Contains("UniversalRenderPipelineAsset") ?? false) 27 | { 28 | _meshRenderer.sharedMaterial = URP; 29 | } 30 | else 31 | { 32 | _meshRenderer.sharedMaterial = Standard; 33 | } 34 | #else 35 | if (GraphicsSettings.renderPipelineAsset?.GetType().Name.Contains("HDRenderPipelineAsset") ?? false) 36 | { 37 | _meshRenderer.sharedMaterial = HDRP; 38 | } 39 | else if (GraphicsSettings.renderPipelineAsset?.GetType().Name.Contains("UniversalRenderPipelineAsset") ?? false) 40 | { 41 | _meshRenderer.sharedMaterial = URP; 42 | } 43 | else 44 | { 45 | _meshRenderer.sharedMaterial = Standard; 46 | } 47 | #endif 48 | } 49 | } 50 | 51 | private void UpdateMeshRenderer() 52 | { 53 | if (_meshRenderer == null) 54 | { 55 | _meshRenderer = GetComponent(); 56 | } 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /Runtime/UI/DynamicMaterial.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5e5bed69c2f411545abae6cce092d5d9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/HDRPDemoVolume.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Rendering; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | [ExecuteAlways] 7 | internal class HDRPDemoVolume : MonoBehaviour 8 | { 9 | [SerializeField] 10 | private BlockadeLabsSkyboxGenerator _generator; 11 | 12 | #if UNITY_HDRP && UNITY_EDITOR 13 | private const string _defaultVolumeProfileGuid = "0b478194c970ff9418e805599ea5b1c6"; 14 | 15 | private void OnEnable() 16 | { 17 | var volume = GetComponent(); 18 | 19 | if (!volume) 20 | { 21 | volume = gameObject.AddComponent(); 22 | _generator.HDRPVolume = volume; 23 | volume.sharedProfile = AssetUtils.LoadAsset(_defaultVolumeProfileGuid); 24 | _generator.HDRPVolumeProfile = volume.sharedProfile; 25 | } 26 | } 27 | #endif 28 | } 29 | } -------------------------------------------------------------------------------- /Runtime/UI/HDRPDemoVolume.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b92b97085f4cc884eaab78a8f1617cd9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/HideAfterClick.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using UnityEngine; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | public class HideAfterClick : MonoBehaviour 7 | { 8 | [SerializeField] 9 | private bool _ignoreClicksInsideRect = true; 10 | 11 | private void OnEnable() 12 | { 13 | // listen if mouse button click occurs and then disable this gameObject 14 | StartCoroutine(CoListenForMouseClick()); 15 | } 16 | 17 | private void OnDisable() 18 | { 19 | StopAllCoroutines(); 20 | } 21 | 22 | private IEnumerator CoListenForMouseClick() 23 | { 24 | var waitForEndOfFrame = new WaitForEndOfFrame(); 25 | // wait until mouse isn't down so we don't capture the click that enabled this component 26 | while (Input.GetMouseButton(0) || Input.GetMouseButtonUp(0)) 27 | { 28 | yield return waitForEndOfFrame; 29 | } 30 | 31 | while (true) 32 | { 33 | if (Input.GetMouseButtonUp(0)) 34 | { 35 | // check if pointer is inside rect 36 | if (_ignoreClicksInsideRect && 37 | RectTransformUtility.RectangleContainsScreenPoint(GetComponent(), Input.mousePosition)) 38 | { 39 | // ignore click 40 | yield return null; 41 | continue; 42 | } 43 | 44 | // wait one frame to make sure to capture the click any mouse clicks on child gameObject 45 | yield return waitForEndOfFrame; 46 | gameObject.SetActive(false); 47 | StopAllCoroutines(); 48 | yield break; 49 | } 50 | 51 | yield return null; 52 | } 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /Runtime/UI/HideAfterClick.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c72063edac44494e9905dbf0f9a0d9d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/HistoryItemBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 999ace60c129e624e9520c9bb6e8dfe5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/HistoryPanel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e18e7d97f0b396e43a3090423f4e6a5c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/Hoverable.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.Events; 3 | using UnityEngine.EventSystems; 4 | 5 | namespace BlockadeLabsSDK 6 | { 7 | public class Hoverable : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler 8 | { 9 | public bool IsHovered { get; private set; } 10 | public UnityEvent OnHoverChanged; 11 | public UnityEvent OnHover; 12 | public UnityEvent OnUnhover; 13 | 14 | public virtual void OnPointerEnter(PointerEventData eventData) 15 | { 16 | IsHovered = true; 17 | OnHoverChanged.Invoke(IsHovered); 18 | OnHover.Invoke(); 19 | } 20 | 21 | public virtual void OnPointerExit(PointerEventData eventData) 22 | { 23 | IsHovered = false; 24 | OnHoverChanged.Invoke(IsHovered); 25 | OnUnhover.Invoke(); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Runtime/UI/Hoverable.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c72cb39662ae9e4892627bc1e6ab253 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/InputFieldResizer.cs: -------------------------------------------------------------------------------- 1 | using TMPro; 2 | using UnityEngine; 3 | using System.Collections; 4 | 5 | namespace BlockadeLabsSDK 6 | { 7 | public class InputFieldResizer : MonoBehaviour 8 | { 9 | private float _padding; 10 | private TMP_InputField _inputField; 11 | private RectTransform _rectTransform; 12 | 13 | private void Awake() 14 | { 15 | _inputField = GetComponent(); 16 | _rectTransform = GetComponent(); 17 | _padding = _rectTransform.rect.height - GetPreferredTextHeight(); 18 | } 19 | 20 | private float GetPreferredTextHeight() 21 | { 22 | var tmpText = _inputField.textComponent.GetComponent(); 23 | var textHeight = tmpText.preferredHeight; 24 | 25 | if (textHeight == 0) 26 | { 27 | const string A = nameof(A); 28 | textHeight = tmpText.GetPreferredValues(A).y; 29 | } 30 | 31 | return textHeight; 32 | } 33 | 34 | private void OnEnable() 35 | { 36 | if (_inputField != null) 37 | { 38 | _inputField.onValueChanged.AddListener(OnInputChanged); 39 | } 40 | 41 | StartCoroutine(CoAdjustHeight()); 42 | } 43 | 44 | private void OnDisable() 45 | { 46 | if (_inputField != null) 47 | { 48 | _inputField.onValueChanged.RemoveListener(OnInputChanged); 49 | } 50 | } 51 | 52 | private void OnInputChanged(string text) 53 | { 54 | if (gameObject.activeInHierarchy) 55 | { 56 | StartCoroutine(CoAdjustHeight()); 57 | } 58 | } 59 | 60 | private IEnumerator CoAdjustHeight() 61 | { 62 | yield return null; 63 | AdjustHeight(); 64 | } 65 | 66 | private void AdjustHeight() 67 | { 68 | var currentHeight = _rectTransform.rect.height; 69 | var newHeight = GetPreferredTextHeight() + _padding; 70 | 71 | if (currentHeight != newHeight) 72 | { 73 | _rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, newHeight); 74 | 75 | var textPos = _inputField.textComponent.rectTransform.anchoredPosition; 76 | _inputField.textComponent.rectTransform.offsetMin = Vector2.zero; 77 | _inputField.textComponent.rectTransform.offsetMax = Vector2.zero; 78 | var textMovement = _inputField.textComponent.rectTransform.anchoredPosition - textPos; 79 | const string Caret = nameof(Caret); 80 | _inputField.textViewport.Find(Caret).GetComponent().anchoredPosition += textMovement; 81 | } 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /Runtime/UI/InputFieldResizer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43f114b49f132c9419cdf6b62cca75e6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/MultiToggle.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnityEngine; 3 | using UnityEngine.Events; 4 | using UnityEngine.EventSystems; 5 | using UnityEngine.UI; 6 | 7 | namespace BlockadeLabsSDK 8 | { 9 | public class MultiToggle : Selectable, IPointerClickHandler 10 | { 11 | public List OnObjects; 12 | public List OffObjects; 13 | public UnityEvent OnValueChanged; 14 | public UnityEvent OnTurnedOn; 15 | 16 | [SerializeField] 17 | private bool _isOn; 18 | public bool IsOn 19 | { 20 | get { return _isOn; } 21 | set 22 | { 23 | if (_isOn != value) 24 | { 25 | _isOn = value; 26 | UpdateVisualState(); 27 | OnValueChanged.Invoke(_isOn); 28 | if (_isOn) 29 | { 30 | OnTurnedOn.Invoke(); 31 | } 32 | } 33 | } 34 | } 35 | 36 | [SerializeField] 37 | private bool _canOnlyTurnOn; 38 | public bool CanOnlyTurnOn 39 | { 40 | get => _canOnlyTurnOn; 41 | set => _canOnlyTurnOn = value; 42 | } 43 | 44 | protected override void Awake() 45 | { 46 | base.Awake(); 47 | UpdateVisualState(); 48 | } 49 | 50 | private void Toggle() 51 | { 52 | IsOn = !IsOn; 53 | } 54 | 55 | private void UpdateVisualState() 56 | { 57 | foreach (var onComponent in OnObjects) 58 | { 59 | onComponent.SetActive(IsOn); 60 | } 61 | 62 | foreach (var offComponent in OffObjects) 63 | { 64 | offComponent.SetActive(!IsOn); 65 | } 66 | } 67 | 68 | public virtual void OnPointerClick(PointerEventData eventData) 69 | { 70 | if (eventData.button != PointerEventData.InputButton.Left || !interactable) 71 | { 72 | return; 73 | } 74 | 75 | if (_canOnlyTurnOn) 76 | { 77 | IsOn = true; 78 | } 79 | else 80 | { 81 | Toggle(); 82 | } 83 | } 84 | } 85 | } -------------------------------------------------------------------------------- /Runtime/UI/MultiToggle.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d48b57b37f4fe974f99a854b145ffe77 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/OpenHyperlink.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using TMPro; 3 | using UnityEngine.EventSystems; 4 | 5 | namespace BlockadeLabsSDK 6 | { 7 | [RequireComponent(typeof(TMP_Text))] 8 | public class OpenHyperlink : MonoBehaviour, IPointerClickHandler 9 | { 10 | private TMP_Text textMeshProText; 11 | 12 | void Start() 13 | { 14 | textMeshProText = GetComponent(); 15 | } 16 | 17 | public void OnPointerClick(PointerEventData eventData) 18 | { 19 | int linkIndex = TMP_TextUtilities.FindIntersectingLink(textMeshProText, Input.mousePosition, null); 20 | if (linkIndex != -1) 21 | { 22 | TMP_LinkInfo linkInfo = textMeshProText.textInfo.linkInfo[linkIndex]; 23 | Application.OpenURL(linkInfo.GetLinkID()); 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Runtime/UI/OpenHyperlink.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4fc21a438ac1454a9b432c5b5fb1e87d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/PopupButton.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.EventSystems; 3 | using UnityEngine.UI; 4 | 5 | namespace BlockadeLabsSDK 6 | { 7 | public class PopupButton : Selectable, IPointerClickHandler 8 | { 9 | public GameObject Popup; 10 | 11 | public void TogglePopup() 12 | { 13 | Popup.SetActive(!Popup.activeSelf); 14 | } 15 | 16 | public virtual void OnPointerClick(PointerEventData eventData) 17 | { 18 | if (eventData.button != PointerEventData.InputButton.Left) 19 | { 20 | return; 21 | } 22 | 23 | TogglePopup(); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /Runtime/UI/PopupButton.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c38b4f80f9100fa4c95c75e4766a975e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/RemixPanel.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | namespace BlockadeLabsSDK 5 | { 6 | public class RemixPanel : MonoBehaviour 7 | { 8 | [SerializeField] 9 | private RuntimeGuiManager _runtimeGuiManager; 10 | 11 | [SerializeField] 12 | private Button _closeButton; 13 | 14 | [SerializeField] 15 | private Toggle _viewControlImageToggle; 16 | 17 | private void OnEnable() 18 | { 19 | _closeButton.onClick.AddListener(OnCloseButtonClicked); 20 | _viewControlImageToggle.onValueChanged.AddListener(ToggleViewControlImage); 21 | _viewControlImageToggle.isOn = !_runtimeGuiManager.Generator.ViewRemixImage; 22 | _runtimeGuiManager.Generator.OnPropertyChanged += OnGeneratorPropertyChanged; 23 | } 24 | 25 | private void OnDisable() 26 | { 27 | _closeButton.onClick.RemoveListener(OnCloseButtonClicked); 28 | _viewControlImageToggle.onValueChanged.RemoveListener(ToggleViewControlImage); 29 | _runtimeGuiManager.Generator.OnPropertyChanged -= OnGeneratorPropertyChanged; 30 | } 31 | 32 | private void OnCloseButtonClicked() 33 | { 34 | _runtimeGuiManager.Generator.RemixImage = null; 35 | gameObject.SetActive(false); 36 | } 37 | 38 | private void ToggleViewControlImage(bool newValue) 39 | { 40 | _runtimeGuiManager.Generator.ViewRemixImage = !newValue; 41 | } 42 | 43 | private void OnGeneratorPropertyChanged() 44 | { 45 | _viewControlImageToggle.isOn = !_runtimeGuiManager.Generator.ViewRemixImage; 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Runtime/UI/RemixPanel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b7d1e83df5f89774bbfbdb462d0421dc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/RuntimeGuiManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0d8573010e2c4ebdba1f53f8c45ef701 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/SearchToolbar.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using TMPro; 4 | using UnityEngine; 5 | using UnityEngine.UI; 6 | 7 | namespace BlockadeLabsSDK 8 | { 9 | public class SearchToolbar : MonoBehaviour 10 | { 11 | [SerializeField] 12 | private TMP_InputField _searchInputField; 13 | 14 | [SerializeField] 15 | private Toggle _onlyLikesToggle; 16 | 17 | [SerializeField] 18 | private TMP_Dropdown _generatedByDropdown; 19 | 20 | [SerializeField] 21 | private TMP_Text _stylePickerButtonText; 22 | 23 | [SerializeField] 24 | private StylePickerPanel _stylePickerPanel; 25 | 26 | [SerializeField] 27 | private TMP_Dropdown _sortDropdown; 28 | 29 | private SkyboxHistoryParameters _searchQueryParameters = new SkyboxHistoryParameters(); 30 | 31 | public event Action OnSearchQueryChanged; 32 | 33 | private void Start() 34 | { 35 | _generatedByDropdown.options = new List 36 | { 37 | new TMP_Dropdown.OptionData("All"), 38 | new TMP_Dropdown.OptionData("Web UI") 39 | }; 40 | _sortDropdown.options = new List 41 | { 42 | new TMP_Dropdown.OptionData("Newest First"), 43 | new TMP_Dropdown.OptionData("Oldest First") 44 | }; 45 | } 46 | 47 | private void OnEnable() 48 | { 49 | _searchInputField.onValueChanged.AddListener(OnSearchInputValueChanged); 50 | _onlyLikesToggle.onValueChanged.AddListener(OnOnlyLikesToggleValueChanged); 51 | _generatedByDropdown.onValueChanged.AddListener(OnGeneratedByDropdownValueChanged); 52 | _stylePickerPanel.OnStylePicked += OnStylePicked; 53 | } 54 | 55 | private void OnDisable() 56 | { 57 | _searchInputField.onValueChanged.RemoveListener(OnSearchInputValueChanged); 58 | _onlyLikesToggle.onValueChanged.RemoveListener(OnOnlyLikesToggleValueChanged); 59 | _generatedByDropdown.onValueChanged.RemoveListener(OnGeneratedByDropdownValueChanged); 60 | _stylePickerPanel.OnStylePicked -= OnStylePicked; 61 | } 62 | 63 | private void OnSearchInputValueChanged(string value) 64 | { 65 | _searchQueryParameters.QueryFilter = value; 66 | OnSearchQueryChanged?.Invoke(_searchQueryParameters); 67 | } 68 | 69 | private void OnOnlyLikesToggleValueChanged(bool value) 70 | { 71 | _searchQueryParameters.FavoritesOnly = value; 72 | OnSearchQueryChanged?.Invoke(_searchQueryParameters); 73 | } 74 | 75 | private void OnGeneratedByDropdownValueChanged(int value) 76 | { 77 | _searchQueryParameters.GeneratedBy = value switch 78 | { 79 | 1 => 0, 80 | _ => null 81 | }; 82 | OnSearchQueryChanged?.Invoke(_searchQueryParameters); 83 | } 84 | 85 | private void OnStylePicked(SkyboxStyle style) 86 | { 87 | if (style != null) 88 | { 89 | _stylePickerButtonText.text = style.Name; 90 | _searchQueryParameters.SkyboxStyleId = style.Id; 91 | } 92 | else 93 | { 94 | _stylePickerButtonText.text = "All Styles"; 95 | _searchQueryParameters.SkyboxStyleId = null; 96 | } 97 | 98 | OnSearchQueryChanged?.Invoke(_searchQueryParameters); 99 | } 100 | 101 | private void OnSortDropdownValueChanged(int value) 102 | { 103 | _searchQueryParameters.Order = value switch 104 | { 105 | 0 => SortOrder.Desc, 106 | _ => SortOrder.Asc 107 | }; 108 | OnSearchQueryChanged?.Invoke(_searchQueryParameters); 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /Runtime/UI/SearchToolbar.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 82d4aef460e57dc4e94aa20cc8976cb6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/SkyboxPreviewPopup.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd51c9f7a0b31984786d6b70dc8b93c5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/StyleItem.cs: -------------------------------------------------------------------------------- 1 | using TMPro; 2 | using UnityEngine; 3 | using UnityEngine.UI; 4 | 5 | namespace BlockadeLabsSDK 6 | { 7 | public class StyleItem : MonoBehaviour 8 | { 9 | [SerializeField] 10 | private GameObject _newSticker; 11 | 12 | [SerializeField] 13 | private GameObject _premiumSticker; 14 | 15 | [SerializeField] 16 | private GameObject _experimentalSticker; 17 | 18 | [SerializeField] 19 | private GameObject _model3Sticker; 20 | 21 | [SerializeField] 22 | private TMP_Text _nameText; 23 | 24 | [SerializeField] 25 | private Button _button; 26 | public Button Button => _button; 27 | 28 | [SerializeField] 29 | private Hoverable _hoverable; 30 | public Hoverable Hoverable => _hoverable; 31 | 32 | [SerializeField] 33 | private GameObject _nextChevron; 34 | 35 | [SerializeField] 36 | private GameObject _selectedIndicator; 37 | 38 | private SkyboxStyle _style; 39 | public SkyboxStyle Style => _style; 40 | 41 | private void Awake() 42 | { 43 | var fontColor = _nameText.color; 44 | var hoverable = GetComponent(); 45 | hoverable.OnHover.AddListener(() => _nameText.color = Color.white); 46 | hoverable.OnUnhover.AddListener(() => _nameText.color = fontColor); 47 | } 48 | 49 | public void SetStyle(SkyboxStyle style) 50 | { 51 | _nameText.text = style.Name; 52 | _newSticker.SetActive(style.New); 53 | _premiumSticker.SetActive(style.Premium); 54 | _experimentalSticker.SetActive(style.Experimental); 55 | _model3Sticker.SetActive(style.Model == SkyboxModel.Model3); 56 | _nextChevron.SetActive(style.FamilyStyles != null); 57 | _selectedIndicator.SetActive(false); 58 | _style = style; 59 | } 60 | 61 | public void SetSelected(bool selected) 62 | { 63 | _selectedIndicator.SetActive(selected); 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /Runtime/UI/StyleItem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af4594fe9de3ef342b8287a2faeefe84 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/UI/StylePickerPanel.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f3def905579525e4ca5a4863fcf658b5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 24103245febd9f14f94eebd1625f473d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Scenes/SkyboxScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d9b6ab5207db7f8438e56b4c66ea03aa 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Settings.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: 324cc1eaac72b2d42a3808f197864943, type: 3} 13 | m_Name: Settings 14 | m_EditorClassIdentifier: 15 | ShowStartScreen: 0 16 | -------------------------------------------------------------------------------- /Settings.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bb545e472ea14b640936128e690be415 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Shaders.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 209876677b7c2cf488a1b27f8a591b5c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Shaders/Blockade Skybox Depth Shader Graph.shadergraph.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e4177791fa90c5b4f91a95593526755e 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} 11 | -------------------------------------------------------------------------------- /Shaders/Blockade Skybox Depth.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ce4c0666f071e1478d991d550d73d50 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | preprocessorOverride: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Shaders/PanoramicToCubemap.compute: -------------------------------------------------------------------------------- 1 | #pragma kernel CSMain 2 | 3 | Texture2D _PanoramicTexture; 4 | int _Size; 5 | RWTexture2DArray _CubemapTexture; 6 | bool _IsLinear; 7 | 8 | SamplerState samplerLinearClamp : register(s0); 9 | 10 | float3 CalculateDirection(int x, int y, int size, int face) 11 | { 12 | float s = (float)x / (size - 1); 13 | float t = (float)y / (size - 1); 14 | float u = s * 2 - 1; 15 | float v = t * 2 - 1; 16 | 17 | float3 direction; 18 | 19 | switch (face) 20 | { 21 | // Unity generates cubemaps with -90 deg rotation for some reason, so match it here. 22 | case 0: direction = float3(-u, -v, -1); break; 23 | case 1: direction = float3(u, -v, 1); break; 24 | case 2: direction = float3(v, 1, -u); break; 25 | case 3: direction = float3(-v, -1, -u); break; 26 | case 4: direction = float3(1, -v, -u); break; 27 | case 5: direction = float3(-1, -v, u); break; 28 | default: direction = float3(0, 0, 0); break; 29 | } 30 | 31 | return normalize(direction); 32 | } 33 | 34 | float2 ConvertDirectionToUV(float3 direction) 35 | { 36 | static const float PI = 3.14159265f; 37 | float phi = atan2(direction.z, direction.x); 38 | float theta = asin(direction.y); 39 | float u = phi / (2.0 * PI) + 0.5f; 40 | float v = 0.5f + theta / PI; 41 | return float2(1 - u, v); 42 | } 43 | 44 | [numthreads(8, 8, 1)] 45 | void CSMain (uint3 id : SV_DispatchThreadID) 46 | { 47 | float3 direction = CalculateDirection(id.x, id.y, _Size, id.z); 48 | float2 uv = ConvertDirectionToUV(direction); 49 | float4 color = _PanoramicTexture.SampleLevel(samplerLinearClamp, uv, 0); 50 | _CubemapTexture[id.xyz] = color; 51 | } -------------------------------------------------------------------------------- /Shaders/PanoramicToCubemap.compute.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 88116db5d6db25542b83a839d6332779 3 | ComputeShaderImporter: 4 | externalObjects: {} 5 | preprocessorOverride: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /SkyboxTextures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 88c2968bb06bbe14bbc7b5f456ee9d25 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /SkyboxTextures/default_skybox_texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/SkyboxTextures/default_skybox_texture.png -------------------------------------------------------------------------------- /SkyboxTextures/default_skybox_texture.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5a127fdf38c688e438b8687fb85a0c6e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | ignoreMasterTextureLimit: 0 28 | grayScaleToAlpha: 0 29 | generateCubemap: 2 30 | cubemapConvolution: 0 31 | seamlessCubemap: 0 32 | textureFormat: 1 33 | maxTextureSize: 2048 34 | textureSettings: 35 | serializedVersion: 2 36 | filterMode: 1 37 | aniso: 1 38 | mipBias: 0 39 | wrapU: 0 40 | wrapV: 0 41 | wrapW: 0 42 | nPOTScale: 1 43 | lightmap: 0 44 | compressionQuality: 50 45 | spriteMode: 0 46 | spriteExtrude: 1 47 | spriteMeshType: 1 48 | alignment: 0 49 | spritePivot: {x: 0.5, y: 0.5} 50 | spritePixelsToUnits: 100 51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 52 | spriteGenerateFallbackPhysicsShape: 1 53 | alphaUsage: 1 54 | alphaIsTransparency: 0 55 | spriteTessellationDetail: -1 56 | textureType: 0 57 | textureShape: 2 58 | singleChannelComponent: 0 59 | flipbookRows: 1 60 | flipbookColumns: 1 61 | maxTextureSizeSet: 0 62 | compressionQualitySet: 0 63 | textureFormatSet: 0 64 | ignorePngGamma: 0 65 | applyGammaDecoding: 0 66 | cookieLightType: 0 67 | platformSettings: 68 | - serializedVersion: 3 69 | buildTarget: DefaultTexturePlatform 70 | maxTextureSize: 16384 71 | resizeAlgorithm: 0 72 | textureFormat: -1 73 | textureCompression: 2 74 | compressionQuality: 50 75 | crunchedCompression: 0 76 | allowsAlphaSplitting: 0 77 | overridden: 0 78 | androidETC2FallbackOverride: 0 79 | forceMaximumCompressionQuality_BC6H_BC7: 0 80 | - serializedVersion: 3 81 | buildTarget: Standalone 82 | maxTextureSize: 2048 83 | resizeAlgorithm: 0 84 | textureFormat: -1 85 | textureCompression: 1 86 | compressionQuality: 50 87 | crunchedCompression: 0 88 | allowsAlphaSplitting: 0 89 | overridden: 0 90 | androidETC2FallbackOverride: 0 91 | forceMaximumCompressionQuality_BC6H_BC7: 0 92 | - serializedVersion: 3 93 | buildTarget: Server 94 | maxTextureSize: 2048 95 | resizeAlgorithm: 0 96 | textureFormat: -1 97 | textureCompression: 1 98 | compressionQuality: 50 99 | crunchedCompression: 0 100 | allowsAlphaSplitting: 0 101 | overridden: 0 102 | androidETC2FallbackOverride: 0 103 | forceMaximumCompressionQuality_BC6H_BC7: 0 104 | - serializedVersion: 3 105 | buildTarget: Android 106 | maxTextureSize: 2048 107 | resizeAlgorithm: 0 108 | textureFormat: -1 109 | textureCompression: 1 110 | compressionQuality: 50 111 | crunchedCompression: 0 112 | allowsAlphaSplitting: 0 113 | overridden: 0 114 | androidETC2FallbackOverride: 0 115 | forceMaximumCompressionQuality_BC6H_BC7: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 123 | internalID: 0 124 | vertices: [] 125 | indices: 126 | edges: [] 127 | weights: [] 128 | secondaryTextures: [] 129 | nameFileIdTable: {} 130 | spritePackingTag: 131 | pSDRemoveMatte: 0 132 | pSDShowRemoveMatteOption: 0 133 | userData: 134 | assetBundleName: 135 | assetBundleVariant: 136 | -------------------------------------------------------------------------------- /Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1cf3e9d3b2580cf42a4724f7e22dbff4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Sprites/PlaceholderPreview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/PlaceholderPreview.png -------------------------------------------------------------------------------- /Sprites/api-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/api-icon.png -------------------------------------------------------------------------------- /Sprites/api-icon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8bb9c337bc1d2ce4785ea61eb16eafe6 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 64 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: iPhone 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Android 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | - serializedVersion: 3 136 | buildTarget: Server 137 | maxTextureSize: 2048 138 | resizeAlgorithm: 0 139 | textureFormat: -1 140 | textureCompression: 1 141 | compressionQuality: 50 142 | crunchedCompression: 0 143 | allowsAlphaSplitting: 0 144 | overridden: 0 145 | ignorePlatformSupport: 0 146 | androidETC2FallbackOverride: 0 147 | forceMaximumCompressionQuality_BC6H_BC7: 0 148 | spriteSheet: 149 | serializedVersion: 2 150 | sprites: [] 151 | outline: [] 152 | physicsShape: [] 153 | bones: [] 154 | spriteID: 5e97eb03825dee720800000000000000 155 | internalID: 0 156 | vertices: [] 157 | indices: 158 | edges: [] 159 | weights: [] 160 | secondaryTextures: [] 161 | nameFileIdTable: {} 162 | mipmapLimitGroupName: 163 | pSDRemoveMatte: 0 164 | userData: 165 | assetBundleName: 166 | assetBundleVariant: 167 | -------------------------------------------------------------------------------- /Sprites/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/arrow.png -------------------------------------------------------------------------------- /Sprites/arrow.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 905532a46f737f24383cd9124c822070 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Server 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Android 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: WebGL 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | - serializedVersion: 3 136 | buildTarget: iPhone 137 | maxTextureSize: 2048 138 | resizeAlgorithm: 0 139 | textureFormat: -1 140 | textureCompression: 1 141 | compressionQuality: 50 142 | crunchedCompression: 0 143 | allowsAlphaSplitting: 0 144 | overridden: 0 145 | ignorePlatformSupport: 0 146 | androidETC2FallbackOverride: 0 147 | forceMaximumCompressionQuality_BC6H_BC7: 0 148 | spriteSheet: 149 | serializedVersion: 2 150 | sprites: [] 151 | outline: [] 152 | physicsShape: [] 153 | bones: [] 154 | spriteID: 5e97eb03825dee720800000000000000 155 | internalID: 0 156 | vertices: [] 157 | indices: 158 | edges: [] 159 | weights: [] 160 | secondaryTextures: [] 161 | nameFileIdTable: {} 162 | mipmapLimitGroupName: 163 | pSDRemoveMatte: 0 164 | userData: 165 | assetBundleName: 166 | assetBundleVariant: 167 | -------------------------------------------------------------------------------- /Sprites/autopan-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/autopan-icon.png -------------------------------------------------------------------------------- /Sprites/blockade-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/blockade-logo.png -------------------------------------------------------------------------------- /Sprites/blockadelabs_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/blockadelabs_icon.png -------------------------------------------------------------------------------- /Sprites/border-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/border-4.png -------------------------------------------------------------------------------- /Sprites/border-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/border-6.png -------------------------------------------------------------------------------- /Sprites/border-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/border-8.png -------------------------------------------------------------------------------- /Sprites/checkmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/checkmark.png -------------------------------------------------------------------------------- /Sprites/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/close.png -------------------------------------------------------------------------------- /Sprites/close.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b11922689f3a9141af69029d5c4c0c4 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 64 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: Standalone 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Server 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: Android 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: WebGL 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | - serializedVersion: 3 136 | buildTarget: iPhone 137 | maxTextureSize: 2048 138 | resizeAlgorithm: 0 139 | textureFormat: -1 140 | textureCompression: 1 141 | compressionQuality: 50 142 | crunchedCompression: 0 143 | allowsAlphaSplitting: 0 144 | overridden: 0 145 | ignorePlatformSupport: 0 146 | androidETC2FallbackOverride: 0 147 | forceMaximumCompressionQuality_BC6H_BC7: 0 148 | spriteSheet: 149 | serializedVersion: 2 150 | sprites: [] 151 | outline: [] 152 | physicsShape: [] 153 | bones: [] 154 | spriteID: 5e97eb03825dee720800000000000000 155 | internalID: 0 156 | vertices: [] 157 | indices: 158 | edges: [] 159 | weights: [] 160 | secondaryTextures: [] 161 | nameFileIdTable: {} 162 | mipmapLimitGroupName: 163 | pSDRemoveMatte: 0 164 | userData: 165 | assetBundleName: 166 | assetBundleVariant: 167 | -------------------------------------------------------------------------------- /Sprites/create-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/create-icon.png -------------------------------------------------------------------------------- /Sprites/cup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/cup.png -------------------------------------------------------------------------------- /Sprites/cup.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d72328bf14e301c4d8a66331b344be13 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | ignoreMasterTextureLimit: 0 28 | grayScaleToAlpha: 0 29 | generateCubemap: 6 30 | cubemapConvolution: 0 31 | seamlessCubemap: 0 32 | textureFormat: 1 33 | maxTextureSize: 2048 34 | textureSettings: 35 | serializedVersion: 2 36 | filterMode: 1 37 | aniso: 1 38 | mipBias: 0 39 | wrapU: 0 40 | wrapV: 0 41 | wrapW: 0 42 | nPOTScale: 0 43 | lightmap: 0 44 | compressionQuality: 50 45 | spriteMode: 0 46 | spriteExtrude: 1 47 | spriteMeshType: 1 48 | alignment: 0 49 | spritePivot: {x: 0.5, y: 0.5} 50 | spritePixelsToUnits: 100 51 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 52 | spriteGenerateFallbackPhysicsShape: 1 53 | alphaUsage: 1 54 | alphaIsTransparency: 0 55 | spriteTessellationDetail: -1 56 | textureType: 8 57 | textureShape: 1 58 | singleChannelComponent: 0 59 | flipbookRows: 1 60 | flipbookColumns: 1 61 | maxTextureSizeSet: 0 62 | compressionQualitySet: 0 63 | textureFormatSet: 0 64 | ignorePngGamma: 0 65 | applyGammaDecoding: 0 66 | cookieLightType: 0 67 | platformSettings: 68 | - serializedVersion: 3 69 | buildTarget: DefaultTexturePlatform 70 | maxTextureSize: 2048 71 | resizeAlgorithm: 0 72 | textureFormat: -1 73 | textureCompression: 1 74 | compressionQuality: 50 75 | crunchedCompression: 0 76 | allowsAlphaSplitting: 0 77 | overridden: 0 78 | androidETC2FallbackOverride: 0 79 | forceMaximumCompressionQuality_BC6H_BC7: 0 80 | - serializedVersion: 3 81 | buildTarget: Standalone 82 | maxTextureSize: 2048 83 | resizeAlgorithm: 0 84 | textureFormat: -1 85 | textureCompression: 1 86 | compressionQuality: 50 87 | crunchedCompression: 0 88 | allowsAlphaSplitting: 0 89 | overridden: 0 90 | androidETC2FallbackOverride: 0 91 | forceMaximumCompressionQuality_BC6H_BC7: 0 92 | - serializedVersion: 3 93 | buildTarget: Server 94 | maxTextureSize: 2048 95 | resizeAlgorithm: 0 96 | textureFormat: -1 97 | textureCompression: 1 98 | compressionQuality: 50 99 | crunchedCompression: 0 100 | allowsAlphaSplitting: 0 101 | overridden: 0 102 | androidETC2FallbackOverride: 0 103 | forceMaximumCompressionQuality_BC6H_BC7: 0 104 | - serializedVersion: 3 105 | buildTarget: Android 106 | maxTextureSize: 2048 107 | resizeAlgorithm: 0 108 | textureFormat: -1 109 | textureCompression: 1 110 | compressionQuality: 50 111 | crunchedCompression: 0 112 | allowsAlphaSplitting: 0 113 | overridden: 0 114 | androidETC2FallbackOverride: 0 115 | forceMaximumCompressionQuality_BC6H_BC7: 0 116 | spriteSheet: 117 | serializedVersion: 2 118 | sprites: [] 119 | outline: [] 120 | physicsShape: [] 121 | bones: [] 122 | spriteID: 123 | internalID: 0 124 | vertices: [] 125 | indices: 126 | edges: [] 127 | weights: [] 128 | secondaryTextures: [] 129 | nameFileIdTable: {} 130 | spritePackingTag: 131 | pSDRemoveMatte: 0 132 | pSDShowRemoveMatteOption: 0 133 | userData: 134 | assetBundleName: 135 | assetBundleVariant: 136 | -------------------------------------------------------------------------------- /Sprites/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/download.png -------------------------------------------------------------------------------- /Sprites/download.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f6668dec5219e184680f5a6dadc11233 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 64 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: iPhone 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Android 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | - serializedVersion: 3 136 | buildTarget: Server 137 | maxTextureSize: 2048 138 | resizeAlgorithm: 0 139 | textureFormat: -1 140 | textureCompression: 1 141 | compressionQuality: 50 142 | crunchedCompression: 0 143 | allowsAlphaSplitting: 0 144 | overridden: 0 145 | ignorePlatformSupport: 0 146 | androidETC2FallbackOverride: 0 147 | forceMaximumCompressionQuality_BC6H_BC7: 0 148 | spriteSheet: 149 | serializedVersion: 2 150 | sprites: [] 151 | outline: [] 152 | physicsShape: [] 153 | bones: [] 154 | spriteID: 5e97eb03825dee720800000000000000 155 | internalID: 0 156 | vertices: [] 157 | indices: 158 | edges: [] 159 | weights: [] 160 | secondaryTextures: [] 161 | nameFileIdTable: {} 162 | mipmapLimitGroupName: 163 | pSDRemoveMatte: 0 164 | userData: 165 | assetBundleName: 166 | assetBundleVariant: 167 | -------------------------------------------------------------------------------- /Sprites/edit-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/edit-icon.png -------------------------------------------------------------------------------- /Sprites/elipsis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/elipsis.png -------------------------------------------------------------------------------- /Sprites/experimental.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/experimental.png -------------------------------------------------------------------------------- /Sprites/eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/eye.png -------------------------------------------------------------------------------- /Sprites/eye.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 77213a5d2d9f66649828357964d690e0 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 12 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 1 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMipmapLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | cookieLightType: 0 69 | platformSettings: 70 | - serializedVersion: 3 71 | buildTarget: DefaultTexturePlatform 72 | maxTextureSize: 64 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | ignorePlatformSupport: 0 81 | androidETC2FallbackOverride: 0 82 | forceMaximumCompressionQuality_BC6H_BC7: 0 83 | - serializedVersion: 3 84 | buildTarget: WebGL 85 | maxTextureSize: 2048 86 | resizeAlgorithm: 0 87 | textureFormat: -1 88 | textureCompression: 1 89 | compressionQuality: 50 90 | crunchedCompression: 0 91 | allowsAlphaSplitting: 0 92 | overridden: 0 93 | ignorePlatformSupport: 0 94 | androidETC2FallbackOverride: 0 95 | forceMaximumCompressionQuality_BC6H_BC7: 0 96 | - serializedVersion: 3 97 | buildTarget: Standalone 98 | maxTextureSize: 2048 99 | resizeAlgorithm: 0 100 | textureFormat: -1 101 | textureCompression: 1 102 | compressionQuality: 50 103 | crunchedCompression: 0 104 | allowsAlphaSplitting: 0 105 | overridden: 0 106 | ignorePlatformSupport: 0 107 | androidETC2FallbackOverride: 0 108 | forceMaximumCompressionQuality_BC6H_BC7: 0 109 | - serializedVersion: 3 110 | buildTarget: iPhone 111 | maxTextureSize: 2048 112 | resizeAlgorithm: 0 113 | textureFormat: -1 114 | textureCompression: 1 115 | compressionQuality: 50 116 | crunchedCompression: 0 117 | allowsAlphaSplitting: 0 118 | overridden: 0 119 | ignorePlatformSupport: 0 120 | androidETC2FallbackOverride: 0 121 | forceMaximumCompressionQuality_BC6H_BC7: 0 122 | - serializedVersion: 3 123 | buildTarget: Android 124 | maxTextureSize: 2048 125 | resizeAlgorithm: 0 126 | textureFormat: -1 127 | textureCompression: 1 128 | compressionQuality: 50 129 | crunchedCompression: 0 130 | allowsAlphaSplitting: 0 131 | overridden: 0 132 | ignorePlatformSupport: 0 133 | androidETC2FallbackOverride: 0 134 | forceMaximumCompressionQuality_BC6H_BC7: 0 135 | - serializedVersion: 3 136 | buildTarget: Server 137 | maxTextureSize: 2048 138 | resizeAlgorithm: 0 139 | textureFormat: -1 140 | textureCompression: 1 141 | compressionQuality: 50 142 | crunchedCompression: 0 143 | allowsAlphaSplitting: 0 144 | overridden: 0 145 | ignorePlatformSupport: 0 146 | androidETC2FallbackOverride: 0 147 | forceMaximumCompressionQuality_BC6H_BC7: 0 148 | spriteSheet: 149 | serializedVersion: 2 150 | sprites: [] 151 | outline: [] 152 | physicsShape: [] 153 | bones: [] 154 | spriteID: 5e97eb03825dee720800000000000000 155 | internalID: 0 156 | vertices: [] 157 | indices: 158 | edges: [] 159 | weights: [] 160 | secondaryTextures: [] 161 | nameFileIdTable: {} 162 | mipmapLimitGroupName: 163 | pSDRemoveMatte: 0 164 | userData: 165 | assetBundleName: 166 | assetBundleVariant: 167 | -------------------------------------------------------------------------------- /Sprites/half-circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/half-circle.png -------------------------------------------------------------------------------- /Sprites/heart-outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/heart-outline.png -------------------------------------------------------------------------------- /Sprites/heart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/heart.png -------------------------------------------------------------------------------- /Sprites/hide-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/hide-icon.png -------------------------------------------------------------------------------- /Sprites/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/info.png -------------------------------------------------------------------------------- /Sprites/model-3-gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/model-3-gradient.png -------------------------------------------------------------------------------- /Sprites/model-3-tag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/model-3-tag.png -------------------------------------------------------------------------------- /Sprites/new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/new.png -------------------------------------------------------------------------------- /Sprites/premium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/premium.png -------------------------------------------------------------------------------- /Sprites/question-mark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/question-mark.png -------------------------------------------------------------------------------- /Sprites/radio-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/radio-off.png -------------------------------------------------------------------------------- /Sprites/radio-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/radio-on.png -------------------------------------------------------------------------------- /Sprites/remix-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/remix-icon.png -------------------------------------------------------------------------------- /Sprites/skybox-ai-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/skybox-ai-logo.png -------------------------------------------------------------------------------- /Sprites/toggle-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/toggle-off.png -------------------------------------------------------------------------------- /Sprites/toggle-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/toggle-on.png -------------------------------------------------------------------------------- /Sprites/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/trash.png -------------------------------------------------------------------------------- /Sprites/triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/triangle.png -------------------------------------------------------------------------------- /Sprites/upload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/upload.png -------------------------------------------------------------------------------- /Sprites/world-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blockade-Games/BlockadeLabs-SDK-Unity/18d553830a50b9a8730dcd91252ccf9de1bbe97d/Sprites/world-icon.png -------------------------------------------------------------------------------- /Tests.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b19c04a8c830ab4fb875a8a8f36e12d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Tests/AbstractTestFixture.cs: -------------------------------------------------------------------------------- 1 | namespace BlockadeLabsSDK.Tests 2 | { 3 | internal abstract class AbstractTestFixture 4 | { 5 | protected readonly BlockadeLabsClient BlockadeLabsClient; 6 | 7 | protected AbstractTestFixture() 8 | { 9 | var auth = new BlockadeLabsAuthentication().LoadDefaultsReversed(); 10 | var settings = new BlockadeLabsClientSettings(); 11 | BlockadeLabsClient = new BlockadeLabsClient(auth, settings) 12 | { 13 | EnableDebug = true 14 | }; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Tests/AbstractTestFixture.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eab605f87687e8c479451b446db23ad6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/BlockadeLabsSDK.Tests.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "BlockadeLabsSDK.Tests", 3 | "rootNamespace": "BlockadeLabsSDK.Tests", 4 | "references": [ 5 | "GUID:27619889b8ba8c24980f49ee34dbb44a", 6 | "GUID:0acc523941302664db1f4e527237feb3", 7 | "GUID:88fee50dfbdd74f41bb80686af654b7f" 8 | ], 9 | "includePlatforms": [ 10 | "Editor" 11 | ], 12 | "excludePlatforms": [], 13 | "allowUnsafeCode": false, 14 | "overrideReferences": true, 15 | "precompiledReferences": [ 16 | "nunit.framework.dll", 17 | "Newtonsoft.Json.dll" 18 | ], 19 | "autoReferenced": true, 20 | "defineConstraints": [ 21 | "UNITY_INCLUDE_TESTS" 22 | ], 23 | "versionDefines": [], 24 | "noEngineReferences": false 25 | } -------------------------------------------------------------------------------- /Tests/BlockadeLabsSDK.Tests.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e22f57ee0ff02046b3b2345a4fb67fc 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Tests/TestFixture_00_Authentication.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc9d9a326d2f1114486668ed65a05435 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/TestFixture_01_Skyboxes.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9cd77cd25366f4f4a9e9026966699649 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {fileID: 2800000, guid: b887f372ed32f7948b74d30aebea96e8, type: 3} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f71a800bb3b15d34fb6848ac42b5ed33 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Textures/PreviewRenderTexture.renderTexture: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!84 &8400000 4 | RenderTexture: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: PreviewRenderTexture 10 | m_ImageContentsHash: 11 | serializedVersion: 2 12 | Hash: 00000000000000000000000000000000 13 | m_ForcedFallbackFormat: 4 14 | m_DownscaleFallback: 0 15 | m_IsAlphaChannelOptional: 0 16 | serializedVersion: 5 17 | m_Width: 766 18 | m_Height: 360 19 | m_AntiAliasing: 1 20 | m_MipCount: -1 21 | m_DepthStencilFormat: 94 22 | m_ColorFormat: 8 23 | m_MipMap: 0 24 | m_GenerateMips: 1 25 | m_SRGB: 0 26 | m_UseDynamicScale: 0 27 | m_BindMS: 0 28 | m_EnableCompatibleFormat: 1 29 | m_EnableRandomWrite: 0 30 | m_TextureSettings: 31 | serializedVersion: 2 32 | m_FilterMode: 1 33 | m_Aniso: 0 34 | m_MipBias: 0 35 | m_WrapU: 1 36 | m_WrapV: 1 37 | m_WrapW: 1 38 | m_Dimension: 2 39 | m_VolumeDepth: 1 40 | m_ShadowSamplingMode: 2 41 | -------------------------------------------------------------------------------- /Textures/PreviewRenderTexture.renderTexture.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b04fd19f6e6b0b4292c7df647bfdff8 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 8400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Volumes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2474f2c8bbec00b488a772df51dd0fd9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Volumes/Blockade HDRP Volume Profile.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0b478194c970ff9418e805599ea5b1c6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.blockadelabs.sdk", 3 | "version": "2.0.2", 4 | "displayName": "Blockade Labs SDK", 5 | "description": "Create stunning AI-generated skybox assets within Unity for use as HDRIs in game dev and immersive projects.", 6 | "unity": "2020.3", 7 | "author": { 8 | "name": "Blockade Labs" 9 | }, 10 | "dependencies": { 11 | "com.unity.modules.video": "1.0.0", 12 | "com.unity.nuget.newtonsoft-json": "3.2.1", 13 | "com.unity.sharp-zip-lib": "1.3.8", 14 | "com.unity.test-framework": "1.4.2" 15 | }, 16 | "keywords": [ 17 | "ai", 18 | "skybox", 19 | "generator" 20 | ], 21 | "hideInEditor": false 22 | } -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb5dc3ed6cb9cdf469562dd9cddee9b9 3 | PackageManifestImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------