├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ ├── ci.yml │ └── tag-changelog-config.js ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── Unity └── PackageProject │ ├── .gitignore │ ├── .vsconfig │ ├── Assets │ ├── Plugins.meta │ └── Plugins │ │ ├── StreamDeck.meta │ │ └── StreamDeck │ │ ├── Editor.meta │ │ └── Editor │ │ ├── UnityStreamDeck.dll │ │ ├── UnityStreamDeck.dll.meta │ │ ├── websocket-sharp.dll │ │ └── websocket-sharp.dll.meta │ ├── Packages │ ├── manifest.json │ └── packages-lock.json │ └── ProjectSettings │ ├── AudioManager.asset │ ├── ClusterInputManager.asset │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── InputManager.asset │ ├── NavMeshAreas.asset │ ├── PackageManagerSettings.asset │ ├── Physics2DSettings.asset │ ├── PresetManager.asset │ ├── ProjectSettings.asset │ ├── ProjectVersion.txt │ ├── QualitySettings.asset │ ├── TagManager.asset │ ├── TimeManager.asset │ ├── UnityConnectSettings.asset │ ├── VFXManager.asset │ ├── VersionControlSettings.asset │ └── XRSettings.asset ├── UnityStreamDeck.sln ├── UnityStreamDeck ├── .gitignore ├── MessageHandler.cs ├── Messages.cs ├── StreamDeckLink.cs ├── StreamDeckLinkConfiguration.cs ├── StreamDeckLinkEditorWindow.cs └── UnityStreamDeck.csproj └── tools └── UnityPacker.exe /.editorconfig: -------------------------------------------------------------------------------- 1 | # Remove the line below if you want to inherit .editorconfig settings from higher directories 2 | root = true 3 | 4 | # C# files 5 | [*.cs] 6 | 7 | #### Core EditorConfig Options #### 8 | 9 | # Indentation and spacing 10 | indent_size = 4 11 | indent_style = space 12 | tab_width = 4 13 | 14 | # New line preferences 15 | end_of_line = crlf 16 | insert_final_newline = false 17 | 18 | #### .NET Coding Conventions #### 19 | 20 | # Organize usings 21 | dotnet_separate_import_directive_groups = false 22 | dotnet_sort_system_directives_first = true 23 | 24 | # this. and Me. preferences 25 | dotnet_style_qualification_for_event = false:silent 26 | dotnet_style_qualification_for_field = false:silent 27 | dotnet_style_qualification_for_method = false:silent 28 | dotnet_style_qualification_for_property = false:silent 29 | 30 | # Language keywords vs BCL types preferences 31 | dotnet_style_predefined_type_for_locals_parameters_members = true:silent 32 | dotnet_style_predefined_type_for_member_access = true:silent 33 | 34 | # Parentheses preferences 35 | dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent 36 | dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent 37 | dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent 38 | dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent 39 | 40 | # Modifier preferences 41 | dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent 42 | 43 | # Expression-level preferences 44 | csharp_style_deconstructed_variable_declaration = true:suggestion 45 | csharp_style_inlined_variable_declaration = true:suggestion 46 | csharp_style_throw_expression = true:suggestion 47 | dotnet_style_coalesce_expression = true:suggestion 48 | dotnet_style_collection_initializer = true:suggestion 49 | dotnet_style_explicit_tuple_names = true:suggestion 50 | dotnet_style_null_propagation = true:suggestion 51 | dotnet_style_object_initializer = true:suggestion 52 | dotnet_style_prefer_auto_properties = true:silent 53 | dotnet_style_prefer_compound_assignment = true:suggestion 54 | dotnet_style_prefer_conditional_expression_over_assignment = true:silent 55 | dotnet_style_prefer_conditional_expression_over_return = true:silent 56 | dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion 57 | dotnet_style_prefer_inferred_tuple_names = true:suggestion 58 | dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion 59 | 60 | # Field preferences 61 | dotnet_style_readonly_field = true:suggestion 62 | 63 | # Parameter preferences 64 | dotnet_code_quality_unused_parameters = all:suggestion 65 | 66 | #### C# Coding Conventions #### 67 | 68 | # var preferences 69 | csharp_style_var_elsewhere = false:silent 70 | csharp_style_var_for_built_in_types = false:silent 71 | csharp_style_var_when_type_is_apparent = false:silent 72 | 73 | # Expression-bodied members 74 | csharp_style_expression_bodied_accessors = true:silent 75 | csharp_style_expression_bodied_constructors = false:silent 76 | csharp_style_expression_bodied_indexers = true:silent 77 | csharp_style_expression_bodied_lambdas = true:silent 78 | csharp_style_expression_bodied_local_functions = false:silent 79 | csharp_style_expression_bodied_methods = false:silent 80 | csharp_style_expression_bodied_operators = false:silent 81 | csharp_style_expression_bodied_properties = true:silent 82 | 83 | # Pattern matching preferences 84 | csharp_style_pattern_matching_over_as_with_null_check = true:suggestion 85 | csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion 86 | csharp_style_prefer_switch_expression = true:suggestion 87 | 88 | # Null-checking preferences 89 | csharp_style_conditional_delegate_call = true:suggestion 90 | 91 | # Modifier preferences 92 | csharp_prefer_static_local_function = true:suggestion 93 | csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async 94 | 95 | # Code-block preferences 96 | csharp_prefer_braces = true:silent 97 | csharp_prefer_simple_using_statement = true:suggestion 98 | 99 | # Expression-level preferences 100 | csharp_prefer_simple_default_expression = true:suggestion 101 | csharp_style_pattern_local_over_anonymous_function = true:suggestion 102 | csharp_style_prefer_index_operator = true:suggestion 103 | csharp_style_prefer_range_operator = true:suggestion 104 | csharp_style_unused_value_assignment_preference = discard_variable:suggestion 105 | csharp_style_unused_value_expression_statement_preference = discard_variable:silent 106 | 107 | # 'using' directive preferences 108 | csharp_using_directive_placement = outside_namespace:silent 109 | 110 | #### C# Formatting Rules #### 111 | 112 | # New line preferences 113 | csharp_new_line_before_catch = true 114 | csharp_new_line_before_else = true 115 | csharp_new_line_before_finally = true 116 | csharp_new_line_before_members_in_anonymous_types = true 117 | csharp_new_line_before_members_in_object_initializers = true 118 | csharp_new_line_before_open_brace = all 119 | csharp_new_line_between_query_expression_clauses = true 120 | 121 | # Indentation preferences 122 | csharp_indent_block_contents = true 123 | csharp_indent_braces = false 124 | csharp_indent_case_contents = true 125 | csharp_indent_case_contents_when_block = true 126 | csharp_indent_labels = one_less_than_current 127 | csharp_indent_switch_labels = true 128 | 129 | # Space preferences 130 | csharp_space_after_cast = false 131 | csharp_space_after_colon_in_inheritance_clause = true 132 | csharp_space_after_comma = true 133 | csharp_space_after_dot = false 134 | csharp_space_after_keywords_in_control_flow_statements = true 135 | csharp_space_after_semicolon_in_for_statement = true 136 | csharp_space_around_binary_operators = before_and_after 137 | csharp_space_around_declaration_statements = false 138 | csharp_space_before_colon_in_inheritance_clause = true 139 | csharp_space_before_comma = false 140 | csharp_space_before_dot = false 141 | csharp_space_before_open_square_brackets = false 142 | csharp_space_before_semicolon_in_for_statement = false 143 | csharp_space_between_empty_square_brackets = false 144 | csharp_space_between_method_call_empty_parameter_list_parentheses = false 145 | csharp_space_between_method_call_name_and_opening_parenthesis = false 146 | csharp_space_between_method_call_parameter_list_parentheses = false 147 | csharp_space_between_method_declaration_empty_parameter_list_parentheses = false 148 | csharp_space_between_method_declaration_name_and_open_parenthesis = false 149 | csharp_space_between_method_declaration_parameter_list_parentheses = false 150 | csharp_space_between_parentheses = false 151 | csharp_space_between_square_brackets = false 152 | 153 | # Wrapping preferences 154 | csharp_preserve_single_line_blocks = true 155 | csharp_preserve_single_line_statements = true 156 | 157 | #### Naming styles #### 158 | 159 | # Naming rules 160 | 161 | dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion 162 | dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface 163 | dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i 164 | 165 | dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion 166 | dotnet_naming_rule.types_should_be_pascal_case.symbols = types 167 | dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case 168 | 169 | dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion 170 | dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members 171 | dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case 172 | 173 | # Symbol specifications 174 | 175 | dotnet_naming_symbols.interface.applicable_kinds = interface 176 | dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal 177 | dotnet_naming_symbols.interface.required_modifiers = 178 | 179 | dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum 180 | dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal 181 | dotnet_naming_symbols.types.required_modifiers = 182 | 183 | dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method 184 | dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal 185 | dotnet_naming_symbols.non_field_members.required_modifiers = 186 | 187 | # Naming styles 188 | 189 | dotnet_naming_style.pascal_case.required_prefix = 190 | dotnet_naming_style.pascal_case.required_suffix = 191 | dotnet_naming_style.pascal_case.word_separator = 192 | dotnet_naming_style.pascal_case.capitalization = pascal_case 193 | 194 | dotnet_naming_style.begins_with_i.required_prefix = I 195 | dotnet_naming_style.begins_with_i.required_suffix = 196 | dotnet_naming_style.begins_with_i.word_separator = 197 | dotnet_naming_style.begins_with_i.capitalization = pascal_case 198 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | ko_fi: nicollasricas 2 | patreon: nicollasricas 3 | custom: ['https://www.buymeacoffee.com/nicollasricas'] -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: "" 5 | labels: bug 6 | assignees: nicollasricas 7 | --- 8 | 9 | ## Expected Behavior 10 | 11 | Please describe the behavior you are expecting 12 | 13 | ## Actual Behavior 14 | 15 | What is the actual behavior? 16 | 17 | ## Steps to Reproduce 18 | 19 | 1. 20 | 2. 21 | 3. 22 | 23 | ## Specifications 24 | 25 | - Unity Version: 26 | - Platform (Windows or Mac): 27 | 28 | ## Failure Logs 29 | 30 | > Windows: %appdata%/Elgato/StreamDeck/Plugins/com.nicollasr.streamdeckunity.sdPlugin/pluginlog.log 31 | 32 | > Mac: ~/Library/Application Support/com.elgato.StreamDeck/Plugins/com.nicollasr.streamdeckunity.mac.sdPlugin/pluginlog.log 33 | 34 | Please include any relevant log snippets or files here. 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "" 5 | labels: enhancement 6 | assignees: nicollasricas 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe alternatives you've considered** 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | **Additional context** 19 | Add any other context or screenshots about the feature request here. 20 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | tags: 6 | - v* 7 | 8 | jobs: 9 | buildAndRelease: 10 | runs-on: windows-latest 11 | outputs: 12 | changelog: "${{ steps.commitsChangeLog.outputs.changelog }}" 13 | steps: 14 | - uses: microsoft/setup-msbuild@v1 15 | 16 | - uses: NuGet/setup-nuget@v1.0.5 17 | 18 | - uses: actions/setup-dotnet@v1 19 | with: 20 | dotnet-version: 5.0.x 21 | 22 | - uses: kuler90/setup-unity@v1 23 | with: 24 | unity-version: 2020.2.4f1 25 | 26 | - uses: actions/checkout@v2 27 | with: 28 | fetch-depth: 0 29 | 30 | - run: nuget restore 31 | 32 | - run: msbuild /p:Configuration=Release 33 | 34 | - run: | 35 | . tools/UnityPacker.exe mode pack folder "Unity/PackageProject/Assets/Plugins/StreamDeck" package UnityStreamDeck root "Assets/Plugins/StreamDeck" ignore "(\\.*|unitypackage|exe|cmd|pdb)$" 36 | 37 | - uses: loopwerk/conventional-changelog-action@latest 38 | id: commitsChangeLog 39 | with: 40 | token: "${{ secrets.GITHUB_TOKEN }}" 41 | config_file: .github/workflows/tag-changelog-config.js 42 | 43 | - uses: actions/create-release@latest 44 | id: createRelease 45 | env: 46 | GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" 47 | with: 48 | tag_name: "${{ github.ref }}" 49 | release_name: "${{ github.ref }}" 50 | body: | 51 | ${{ steps.commitsChangeLog.outputs.changes }} 52 | draft: false 53 | prerelease: false 54 | 55 | - uses: actions/upload-release-asset@latest 56 | id: updateRelease 57 | env: 58 | GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" 59 | with: 60 | upload_url: "${{ steps.createRelease.outputs.upload_url }}" 61 | asset_path: UnityStreamDeck.unitypackage 62 | asset_name: UnityStreamDeck.unitypackage 63 | asset_content_type: application/zip 64 | pullRequestChangelog: 65 | runs-on: windows-latest 66 | needs: buildAndRelease 67 | steps: 68 | - uses: actions/checkout@v2 69 | 70 | - run: | 71 | (Get-Content CHANGELOG.md) -replace "\[Unreleased\]", "$&`n`n${{ needs.buildAndRelease.outputs.changelog }}" | Set-Content CHANGELOG.md 72 | 73 | - uses: peter-evans/create-pull-request@v3 74 | with: 75 | base: master 76 | commit-message: Release ${{ github.ref }} CHANGELOG 77 | title: Update CHANGELOG 78 | branch: changelog 79 | delete-branch: true 80 | draft: false 81 | -------------------------------------------------------------------------------- /.github/workflows/tag-changelog-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | types: [ 3 | { types: ["feat", "feature"], label: "New Features" }, 4 | { types: ["fix", "bugfix"], label: "Bugfixes" }, 5 | { types: ["improvements", "enhancement"], label: "Improvements" }, 6 | { types: ["perf"], label: "Performance Improvements" }, 7 | { types: ["build", "ci"], label: "Build System" }, 8 | { types: ["refactor"], label: "Refactors" }, 9 | { types: ["doc", "docs"], label: "Documentation Changes" }, 10 | { types: ["test", "tests"], label: "Tests" }, 11 | { types: ["style"], label: "Code Style Changes" }, 12 | { types: ["chore"], label: "Chores" }, 13 | { types: ["other"], label: "Other Changes" }, 14 | ], 15 | 16 | excludeTypes: ["other", "doc", "chore"], 17 | 18 | renderTypeSection: function (label, commits) { 19 | let text = `\n### ${label}\n`; 20 | 21 | commits.forEach((commit) => { 22 | const scope = commit.scope ? `**${commit.scope}:** ` : ""; 23 | text += `- ${scope}${commit.subject}\n`; 24 | }); 25 | 26 | return text; 27 | }, 28 | 29 | renderNotes: function (notes) { 30 | let text = `\n### BREAKING CHANGES\n`; 31 | 32 | notes.forEach((note) => { 33 | text += `- due to [${note.commit.sha.substr(0, 6)}](${ 34 | note.commit.url 35 | }): ${note.commit.subject}\n\n`; 36 | text += `${note.text}\n\n`; 37 | }); 38 | 39 | return text; 40 | }, 41 | 42 | renderChangelog: function (release, changes) { 43 | return `## [${release}] - ${new Date() 44 | .toISOString() 45 | .substr(0, 10)}\n${changes}`; 46 | }, 47 | }; 48 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vs/ -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [Unreleased] 4 | 5 | ## [v1.1.3] - 2022-01-23 6 | ### Bugfixes 7 | - :bug: Fixed component caching 8 | 9 | ## [v1.1.2] - 2021-11-09 10 | ### Bugfixes 11 | - :bug: Fix toggle scene/game view action. 12 | 13 | ## [v1.1.1] - 2021-05-12 14 | ### Refactors 15 | - :loud_sound: Reduced log verbosity 16 | 17 | ## [v1.1.0] - 2021-04-10 18 | 19 | ### New Features 20 | 21 | - ✨ Added an action to toggle object states 22 | - ✨ Added an action to add components to objects (2019.2+) 23 | - ✨ Added an action to select objects by name or tag 24 | - ✨ Added an option to disable the stream deck integration (per editor) 25 | - ✨ Added an option to reduce logs 26 | 27 | ### Bugfixes 28 | 29 | - 🔧 Fixed connection issue/error after changing the port 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Nicollas R. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Stream Deck for Unity 2 | 3 | Enables Stream Deck integration within Unity. 4 | 5 | **It should work with any Unity version as long it targets .NET 4.0+.** 6 | 7 | ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/nicollasricas/unity-streamdeck/CI?style=for-the-badge) 8 | ![GitHub release (latest by date)](https://img.shields.io/github/v/release/nicollasricas/unity-streamdeck?style=for-the-badge) 9 | [![GitHub license](https://img.shields.io/github/license/nicollasricas/unity-streamdeck?style=for-the-badge)](https://github.com/nicollasricas/unity-streamdeck/blob/master/LICENSE) 10 | 11 | ## Getting Started 12 | 13 | 1. Download the plugin for Stream Deck on the Stream Deck Store or [here](https://github.com/nicollasricas/streamdeck-unity/releases/latest). 14 | 15 | 2. Download the unity package [here](https://github.com/nicollasricas/unity-streamdeck/releases/latest) and [import](https://docs.unity3d.com/Manual/AssetPackages.html) in any Unity project you wish to use it. 16 | 17 | If you have downloaded the plugin and imported the package into your project, you should see this message: 18 | 19 | ![Stream Deck Connected](https://user-images.githubusercontent.com/7860985/114270390-0f16ba00-99da-11eb-999b-fd90fb74cc95.png) 20 | 21 | ## Features 22 | 23 | - Add components to objects 24 | - Execute menus 25 | - Paste components 26 | - Pause/resume play mode 27 | - Reset and rotate objects 28 | - Select objects by name or tag 29 | - Switch between scene and game view 30 | - Toggle objects states 31 | 32 | ## Settings 33 | 34 | To open the package settings go to the menu: **Tools > Stream Deck**. 35 | 36 | ![Settings](https://user-images.githubusercontent.com/7860985/114270056-3e2c2c00-99d8-11eb-8380-928377867142.png) 37 | 38 | ## Execute Menu 39 | 40 | To execute a menu, you have to write the full path, spaces included. Submenus use a slash (/) as a divider. 41 | 42 | > Window/Layouts/4 Split 43 | 44 | ![4 Split Layout Menu](https://user-images.githubusercontent.com/7860985/114270122-ab3fc180-99d8-11eb-80eb-341ef5182b3f.png) 45 | 46 | ![4 Split Layout Action](https://user-images.githubusercontent.com/7860985/114270198-15f0fd00-99d9-11eb-9898-510441127c8d.png) 47 | 48 | ## FAQ 49 | 50 | - The live link is not connecting 51 | 52 | > Make sure you have installed the [Stream Deck Plugin](https://github.com/nicollasricas/streamdeck-unity/releases/latest), imported the [Unity Package](https://github.com/nicollasricas/unity-streamdeck/releases/latest) into your project, the port you are using are available and the stream deck software is open. **If you have to change the port don't forget to change it on the [Unity Editor](https://github.com/nicollasricas/unity-streamdeck#settings)**. 53 | 54 | - The default port is been used by another software 55 | 56 | > You can change the port on the [Settings](#Settings) menu, don't forget to change it on the [Stream Deck Plugin](https://github.com/nicollasricas/streamdeck-unity#settings). 57 | 58 | - Will this plugin be built into the compiled project?? 59 | 60 | > No, the plugin is tagged as editor only so it will only work on the unity editor. 61 | 62 | - I'm getting an `Multiple precompiled assemblies with the same name websocket-sharp.dll included or the current platform` error 63 | 64 | > This plugin requires the `Websocket-sharp` library and if you are getting this error, it means that another package in your project is using it. In this case, I recommend that you remove the one from this package (`Plugins/StreamDeck/Editor/websocket-sharp.dll`) since it's tagged as editor only and if your build depends on it better let the other win the conflict. 65 | -------------------------------------------------------------------------------- /Unity/PackageProject/.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Uu]ser[Ss]ettings/ 12 | 13 | # MemoryCaptures can get excessive in size. 14 | # They also could contain extremely sensitive data 15 | /[Mm]emoryCaptures/ 16 | 17 | # Asset meta data should only be ignored when the corresponding asset is also ignored 18 | !/[Aa]ssets/**/*.meta 19 | 20 | # Uncomment this line if you wish to ignore the asset store tools plugin 21 | # /[Aa]ssets/AssetStoreTools* 22 | 23 | # Autogenerated Jetbrains Rider plugin 24 | /[Aa]ssets/Plugins/Editor/JetBrains* 25 | 26 | # Visual Studio cache directory 27 | .vs/ 28 | 29 | # Gradle cache directory 30 | .gradle/ 31 | 32 | # Autogenerated VS/MD/Consulo solution and project files 33 | ExportedObj/ 34 | .consulo/ 35 | *.csproj 36 | *.unityproj 37 | *.sln 38 | *.suo 39 | *.tmp 40 | *.user 41 | *.userprefs 42 | *.pidb 43 | *.booproj 44 | *.svd 45 | *.pdb 46 | *.mdb 47 | *.opendb 48 | *.VC.db 49 | 50 | # Unity3D generated meta files 51 | *.pidb.meta 52 | *.pdb.meta 53 | *.mdb.meta 54 | 55 | # Unity3D generated file on crash reports 56 | sysinfo.txt 57 | 58 | # Builds 59 | *.apk 60 | *.aab 61 | *.unitypackage 62 | 63 | # Crashlytics generated file 64 | crashlytics-build.properties 65 | 66 | # Packed Addressables 67 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 68 | 69 | # Temporary auto-generated Android Assets 70 | /[Aa]ssets/[Ss]treamingAssets/aa.meta 71 | /[Aa]ssets/[Ss]treamingAssets/aa/* -------------------------------------------------------------------------------- /Unity/PackageProject/.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Workload.ManagedGame" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /Unity/PackageProject/Assets/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3fefcb47477326b42a270bb6e413ba9e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Unity/PackageProject/Assets/Plugins/StreamDeck.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 603d706d551216146b7835eda7d59afd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Unity/PackageProject/Assets/Plugins/StreamDeck/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d5bff2e20fa06d4183ab754c03284a0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Unity/PackageProject/Assets/Plugins/StreamDeck/Editor/UnityStreamDeck.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicollasricas/unity-deck/219ff19342b35081a77a18675d2a26120bc141a5/Unity/PackageProject/Assets/Plugins/StreamDeck/Editor/UnityStreamDeck.dll -------------------------------------------------------------------------------- /Unity/PackageProject/Assets/Plugins/StreamDeck/Editor/UnityStreamDeck.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ca35f337ce6659b4b85affec3df7a273 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 1 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Windows Store Apps: WindowsStoreApps 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: AnyCPU 31 | userData: 32 | assetBundleName: 33 | assetBundleVariant: 34 | -------------------------------------------------------------------------------- /Unity/PackageProject/Assets/Plugins/StreamDeck/Editor/websocket-sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicollasricas/unity-deck/219ff19342b35081a77a18675d2a26120bc141a5/Unity/PackageProject/Assets/Plugins/StreamDeck/Editor/websocket-sharp.dll -------------------------------------------------------------------------------- /Unity/PackageProject/Assets/Plugins/StreamDeck/Editor/websocket-sharp.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 44283c4fe704990408b43b72c69ad203 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | Any: 16 | second: 17 | enabled: 0 18 | settings: {} 19 | - first: 20 | Editor: Editor 21 | second: 22 | enabled: 1 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Windows Store Apps: WindowsStoreApps 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: AnyCPU 31 | userData: 32 | assetBundleName: 33 | assetBundleVariant: 34 | -------------------------------------------------------------------------------- /Unity/PackageProject/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.modules.ai": "1.0.0", 4 | "com.unity.modules.androidjni": "1.0.0", 5 | "com.unity.modules.animation": "1.0.0", 6 | "com.unity.modules.assetbundle": "1.0.0", 7 | "com.unity.modules.audio": "1.0.0", 8 | "com.unity.modules.cloth": "1.0.0", 9 | "com.unity.modules.director": "1.0.0", 10 | "com.unity.modules.imageconversion": "1.0.0", 11 | "com.unity.modules.imgui": "1.0.0", 12 | "com.unity.modules.jsonserialize": "1.0.0", 13 | "com.unity.modules.particlesystem": "1.0.0", 14 | "com.unity.modules.physics": "1.0.0", 15 | "com.unity.modules.physics2d": "1.0.0", 16 | "com.unity.modules.screencapture": "1.0.0", 17 | "com.unity.modules.terrain": "1.0.0", 18 | "com.unity.modules.terrainphysics": "1.0.0", 19 | "com.unity.modules.tilemap": "1.0.0", 20 | "com.unity.modules.ui": "1.0.0", 21 | "com.unity.modules.uielements": "1.0.0", 22 | "com.unity.modules.umbra": "1.0.0", 23 | "com.unity.modules.unityanalytics": "1.0.0", 24 | "com.unity.modules.unitywebrequest": "1.0.0", 25 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 26 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 27 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 28 | "com.unity.modules.unitywebrequestwww": "1.0.0", 29 | "com.unity.modules.vehicles": "1.0.0", 30 | "com.unity.modules.video": "1.0.0", 31 | "com.unity.modules.vr": "1.0.0", 32 | "com.unity.modules.wind": "1.0.0", 33 | "com.unity.modules.xr": "1.0.0" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Unity/PackageProject/Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.modules.ai": { 4 | "version": "1.0.0", 5 | "depth": 0, 6 | "source": "builtin", 7 | "dependencies": {} 8 | }, 9 | "com.unity.modules.androidjni": { 10 | "version": "1.0.0", 11 | "depth": 0, 12 | "source": "builtin", 13 | "dependencies": {} 14 | }, 15 | "com.unity.modules.animation": { 16 | "version": "1.0.0", 17 | "depth": 0, 18 | "source": "builtin", 19 | "dependencies": {} 20 | }, 21 | "com.unity.modules.assetbundle": { 22 | "version": "1.0.0", 23 | "depth": 0, 24 | "source": "builtin", 25 | "dependencies": {} 26 | }, 27 | "com.unity.modules.audio": { 28 | "version": "1.0.0", 29 | "depth": 0, 30 | "source": "builtin", 31 | "dependencies": {} 32 | }, 33 | "com.unity.modules.cloth": { 34 | "version": "1.0.0", 35 | "depth": 0, 36 | "source": "builtin", 37 | "dependencies": { 38 | "com.unity.modules.physics": "1.0.0" 39 | } 40 | }, 41 | "com.unity.modules.director": { 42 | "version": "1.0.0", 43 | "depth": 0, 44 | "source": "builtin", 45 | "dependencies": { 46 | "com.unity.modules.audio": "1.0.0", 47 | "com.unity.modules.animation": "1.0.0" 48 | } 49 | }, 50 | "com.unity.modules.imageconversion": { 51 | "version": "1.0.0", 52 | "depth": 0, 53 | "source": "builtin", 54 | "dependencies": {} 55 | }, 56 | "com.unity.modules.imgui": { 57 | "version": "1.0.0", 58 | "depth": 0, 59 | "source": "builtin", 60 | "dependencies": {} 61 | }, 62 | "com.unity.modules.jsonserialize": { 63 | "version": "1.0.0", 64 | "depth": 0, 65 | "source": "builtin", 66 | "dependencies": {} 67 | }, 68 | "com.unity.modules.particlesystem": { 69 | "version": "1.0.0", 70 | "depth": 0, 71 | "source": "builtin", 72 | "dependencies": {} 73 | }, 74 | "com.unity.modules.physics": { 75 | "version": "1.0.0", 76 | "depth": 0, 77 | "source": "builtin", 78 | "dependencies": {} 79 | }, 80 | "com.unity.modules.physics2d": { 81 | "version": "1.0.0", 82 | "depth": 0, 83 | "source": "builtin", 84 | "dependencies": {} 85 | }, 86 | "com.unity.modules.screencapture": { 87 | "version": "1.0.0", 88 | "depth": 0, 89 | "source": "builtin", 90 | "dependencies": { 91 | "com.unity.modules.imageconversion": "1.0.0" 92 | } 93 | }, 94 | "com.unity.modules.subsystems": { 95 | "version": "1.0.0", 96 | "depth": 1, 97 | "source": "builtin", 98 | "dependencies": { 99 | "com.unity.modules.jsonserialize": "1.0.0" 100 | } 101 | }, 102 | "com.unity.modules.terrain": { 103 | "version": "1.0.0", 104 | "depth": 0, 105 | "source": "builtin", 106 | "dependencies": {} 107 | }, 108 | "com.unity.modules.terrainphysics": { 109 | "version": "1.0.0", 110 | "depth": 0, 111 | "source": "builtin", 112 | "dependencies": { 113 | "com.unity.modules.physics": "1.0.0", 114 | "com.unity.modules.terrain": "1.0.0" 115 | } 116 | }, 117 | "com.unity.modules.tilemap": { 118 | "version": "1.0.0", 119 | "depth": 0, 120 | "source": "builtin", 121 | "dependencies": { 122 | "com.unity.modules.physics2d": "1.0.0" 123 | } 124 | }, 125 | "com.unity.modules.ui": { 126 | "version": "1.0.0", 127 | "depth": 0, 128 | "source": "builtin", 129 | "dependencies": {} 130 | }, 131 | "com.unity.modules.uielements": { 132 | "version": "1.0.0", 133 | "depth": 0, 134 | "source": "builtin", 135 | "dependencies": { 136 | "com.unity.modules.ui": "1.0.0", 137 | "com.unity.modules.imgui": "1.0.0", 138 | "com.unity.modules.jsonserialize": "1.0.0", 139 | "com.unity.modules.uielementsnative": "1.0.0" 140 | } 141 | }, 142 | "com.unity.modules.uielementsnative": { 143 | "version": "1.0.0", 144 | "depth": 1, 145 | "source": "builtin", 146 | "dependencies": { 147 | "com.unity.modules.ui": "1.0.0", 148 | "com.unity.modules.imgui": "1.0.0", 149 | "com.unity.modules.jsonserialize": "1.0.0" 150 | } 151 | }, 152 | "com.unity.modules.umbra": { 153 | "version": "1.0.0", 154 | "depth": 0, 155 | "source": "builtin", 156 | "dependencies": {} 157 | }, 158 | "com.unity.modules.unityanalytics": { 159 | "version": "1.0.0", 160 | "depth": 0, 161 | "source": "builtin", 162 | "dependencies": { 163 | "com.unity.modules.unitywebrequest": "1.0.0", 164 | "com.unity.modules.jsonserialize": "1.0.0" 165 | } 166 | }, 167 | "com.unity.modules.unitywebrequest": { 168 | "version": "1.0.0", 169 | "depth": 0, 170 | "source": "builtin", 171 | "dependencies": {} 172 | }, 173 | "com.unity.modules.unitywebrequestassetbundle": { 174 | "version": "1.0.0", 175 | "depth": 0, 176 | "source": "builtin", 177 | "dependencies": { 178 | "com.unity.modules.assetbundle": "1.0.0", 179 | "com.unity.modules.unitywebrequest": "1.0.0" 180 | } 181 | }, 182 | "com.unity.modules.unitywebrequestaudio": { 183 | "version": "1.0.0", 184 | "depth": 0, 185 | "source": "builtin", 186 | "dependencies": { 187 | "com.unity.modules.unitywebrequest": "1.0.0", 188 | "com.unity.modules.audio": "1.0.0" 189 | } 190 | }, 191 | "com.unity.modules.unitywebrequesttexture": { 192 | "version": "1.0.0", 193 | "depth": 0, 194 | "source": "builtin", 195 | "dependencies": { 196 | "com.unity.modules.unitywebrequest": "1.0.0", 197 | "com.unity.modules.imageconversion": "1.0.0" 198 | } 199 | }, 200 | "com.unity.modules.unitywebrequestwww": { 201 | "version": "1.0.0", 202 | "depth": 0, 203 | "source": "builtin", 204 | "dependencies": { 205 | "com.unity.modules.unitywebrequest": "1.0.0", 206 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 207 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 208 | "com.unity.modules.audio": "1.0.0", 209 | "com.unity.modules.assetbundle": "1.0.0", 210 | "com.unity.modules.imageconversion": "1.0.0" 211 | } 212 | }, 213 | "com.unity.modules.vehicles": { 214 | "version": "1.0.0", 215 | "depth": 0, 216 | "source": "builtin", 217 | "dependencies": { 218 | "com.unity.modules.physics": "1.0.0" 219 | } 220 | }, 221 | "com.unity.modules.video": { 222 | "version": "1.0.0", 223 | "depth": 0, 224 | "source": "builtin", 225 | "dependencies": { 226 | "com.unity.modules.audio": "1.0.0", 227 | "com.unity.modules.ui": "1.0.0", 228 | "com.unity.modules.unitywebrequest": "1.0.0" 229 | } 230 | }, 231 | "com.unity.modules.vr": { 232 | "version": "1.0.0", 233 | "depth": 0, 234 | "source": "builtin", 235 | "dependencies": { 236 | "com.unity.modules.jsonserialize": "1.0.0", 237 | "com.unity.modules.physics": "1.0.0", 238 | "com.unity.modules.xr": "1.0.0" 239 | } 240 | }, 241 | "com.unity.modules.wind": { 242 | "version": "1.0.0", 243 | "depth": 0, 244 | "source": "builtin", 245 | "dependencies": {} 246 | }, 247 | "com.unity.modules.xr": { 248 | "version": "1.0.0", 249 | "depth": 0, 250 | "source": "builtin", 251 | "dependencies": { 252 | "com.unity.modules.physics": "1.0.0", 253 | "com.unity.modules.jsonserialize": "1.0.0", 254 | "com.unity.modules.subsystems": "1.0.0" 255 | } 256 | } 257 | } 258 | } 259 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_SerializeInlineMappingsOnOneLine: 1 -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | m_LogWhenShaderIsCompiled: 0 63 | m_AllowEnlightenSupportForUpgradedProject: 0 64 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 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: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreviewPackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | oneTimeWarningShown: 0 20 | m_Registries: 21 | - m_Id: main 22 | m_Name: 23 | m_Url: https://packages.unity.com 24 | m_Scopes: [] 25 | m_IsDefault: 1 26 | m_Capabilities: 7 27 | m_UserSelectedRegistryName: 28 | m_UserAddingNewScopedRegistry: 0 29 | m_RegistryInfoDraft: 30 | m_ErrorMessage: 31 | m_Original: 32 | m_Id: 33 | m_Name: 34 | m_Url: 35 | m_Scopes: [] 36 | m_IsDefault: 0 37 | m_Capabilities: 0 38 | m_Modified: 0 39 | m_Name: 40 | m_Url: 41 | m_Scopes: 42 | - 43 | m_SelectedScopeIndex: 0 44 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 22 7 | productGUID: c1275c5be02aa594fbf1dc71c3cb2a7a 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: PackageProject 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | mipStripping: 0 53 | numberOfMipsStripped: 0 54 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 55 | iosShowActivityIndicatorOnLoading: -1 56 | androidShowActivityIndicatorOnLoading: -1 57 | iosUseCustomAppBackgroundBehavior: 0 58 | iosAllowHTTPDownload: 1 59 | allowedAutorotateToPortrait: 1 60 | allowedAutorotateToPortraitUpsideDown: 1 61 | allowedAutorotateToLandscapeRight: 1 62 | allowedAutorotateToLandscapeLeft: 1 63 | useOSAutorotation: 1 64 | use32BitDisplayBuffer: 1 65 | preserveFramebufferAlpha: 0 66 | disableDepthAndStencilBuffers: 0 67 | androidStartInFullscreen: 1 68 | androidRenderOutsideSafeArea: 1 69 | androidUseSwappy: 1 70 | androidBlitType: 0 71 | defaultIsNativeResolution: 1 72 | macRetinaSupport: 1 73 | runInBackground: 1 74 | captureSingleScreen: 0 75 | muteOtherAudioSources: 0 76 | Prepare IOS For Recording: 0 77 | Force IOS Speakers When Recording: 0 78 | deferSystemGesturesMode: 0 79 | hideHomeButton: 0 80 | submitAnalytics: 1 81 | usePlayerLog: 1 82 | bakeCollisionMeshes: 0 83 | forceSingleInstance: 0 84 | useFlipModelSwapchain: 1 85 | resizableWindow: 0 86 | useMacAppStoreValidation: 0 87 | macAppStoreCategory: public.app-category.games 88 | gpuSkinning: 1 89 | xboxPIXTextureCapture: 0 90 | xboxEnableAvatar: 0 91 | xboxEnableKinect: 0 92 | xboxEnableKinectAutoTracking: 0 93 | xboxEnableFitness: 0 94 | visibleInBackground: 1 95 | allowFullscreenSwitch: 1 96 | fullscreenMode: 1 97 | xboxSpeechDB: 0 98 | xboxEnableHeadOrientation: 0 99 | xboxEnableGuest: 0 100 | xboxEnablePIXSampling: 0 101 | metalFramebufferOnly: 0 102 | xboxOneResolution: 0 103 | xboxOneSResolution: 0 104 | xboxOneXResolution: 3 105 | xboxOneMonoLoggingLevel: 0 106 | xboxOneLoggingLevel: 1 107 | xboxOneDisableEsram: 0 108 | xboxOneEnableTypeOptimization: 0 109 | xboxOnePresentImmediateThreshold: 0 110 | switchQueueCommandMemory: 0 111 | switchQueueControlMemory: 16384 112 | switchQueueComputeMemory: 262144 113 | switchNVNShaderPoolsGranularity: 33554432 114 | switchNVNDefaultPoolsGranularity: 16777216 115 | switchNVNOtherPoolsGranularity: 16777216 116 | switchNVNMaxPublicTextureIDCount: 0 117 | switchNVNMaxPublicSamplerIDCount: 0 118 | stadiaPresentMode: 0 119 | stadiaTargetFramerate: 0 120 | vulkanNumSwapchainBuffers: 3 121 | vulkanEnableSetSRGBWrite: 0 122 | vulkanEnablePreTransform: 0 123 | vulkanEnableLateAcquireNextImage: 0 124 | m_SupportedAspectRatios: 125 | 4:3: 1 126 | 5:4: 1 127 | 16:10: 1 128 | 16:9: 1 129 | Others: 1 130 | bundleVersion: 0.1 131 | preloadedAssets: [] 132 | metroInputSource: 0 133 | wsaTransparentSwapchain: 0 134 | m_HolographicPauseOnTrackingLoss: 1 135 | xboxOneDisableKinectGpuReservation: 1 136 | xboxOneEnable7thCore: 1 137 | vrSettings: 138 | enable360StereoCapture: 0 139 | isWsaHolographicRemotingEnabled: 0 140 | enableFrameTimingStats: 0 141 | useHDRDisplay: 0 142 | D3DHDRBitDepth: 0 143 | m_ColorGamuts: 00000000 144 | targetPixelDensity: 30 145 | resolutionScalingMode: 0 146 | androidSupportedAspectRatio: 1 147 | androidMaxAspectRatio: 2.1 148 | applicationIdentifier: {} 149 | buildNumber: 150 | Standalone: 0 151 | iPhone: 0 152 | tvOS: 0 153 | overrideDefaultApplicationIdentifier: 0 154 | AndroidBundleVersionCode: 1 155 | AndroidMinSdkVersion: 19 156 | AndroidTargetSdkVersion: 0 157 | AndroidPreferredInstallLocation: 1 158 | aotOptions: 159 | stripEngineCode: 1 160 | iPhoneStrippingLevel: 0 161 | iPhoneScriptCallOptimization: 0 162 | ForceInternetPermission: 0 163 | ForceSDCardPermission: 0 164 | CreateWallpaper: 0 165 | APKExpansionFiles: 0 166 | keepLoadedShadersAlive: 0 167 | StripUnusedMeshComponents: 1 168 | VertexChannelCompressionMask: 4054 169 | iPhoneSdkVersion: 988 170 | iOSTargetOSVersionString: 11.0 171 | tvOSSdkVersion: 0 172 | tvOSRequireExtendedGameController: 0 173 | tvOSTargetOSVersionString: 11.0 174 | uIPrerenderedIcon: 0 175 | uIRequiresPersistentWiFi: 0 176 | uIRequiresFullScreen: 1 177 | uIStatusBarHidden: 1 178 | uIExitOnSuspend: 0 179 | uIStatusBarStyle: 0 180 | appleTVSplashScreen: {fileID: 0} 181 | appleTVSplashScreen2x: {fileID: 0} 182 | tvOSSmallIconLayers: [] 183 | tvOSSmallIconLayers2x: [] 184 | tvOSLargeIconLayers: [] 185 | tvOSLargeIconLayers2x: [] 186 | tvOSTopShelfImageLayers: [] 187 | tvOSTopShelfImageLayers2x: [] 188 | tvOSTopShelfImageWideLayers: [] 189 | tvOSTopShelfImageWideLayers2x: [] 190 | iOSLaunchScreenType: 0 191 | iOSLaunchScreenPortrait: {fileID: 0} 192 | iOSLaunchScreenLandscape: {fileID: 0} 193 | iOSLaunchScreenBackgroundColor: 194 | serializedVersion: 2 195 | rgba: 0 196 | iOSLaunchScreenFillPct: 100 197 | iOSLaunchScreenSize: 100 198 | iOSLaunchScreenCustomXibPath: 199 | iOSLaunchScreeniPadType: 0 200 | iOSLaunchScreeniPadImage: {fileID: 0} 201 | iOSLaunchScreeniPadBackgroundColor: 202 | serializedVersion: 2 203 | rgba: 0 204 | iOSLaunchScreeniPadFillPct: 100 205 | iOSLaunchScreeniPadSize: 100 206 | iOSLaunchScreeniPadCustomXibPath: 207 | iOSLaunchScreenCustomStoryboardPath: 208 | iOSLaunchScreeniPadCustomStoryboardPath: 209 | iOSDeviceRequirements: [] 210 | iOSURLSchemes: [] 211 | iOSBackgroundModes: 0 212 | iOSMetalForceHardShadows: 0 213 | metalEditorSupport: 1 214 | metalAPIValidation: 1 215 | iOSRenderExtraFrameOnPause: 0 216 | iosCopyPluginsCodeInsteadOfSymlink: 0 217 | appleDeveloperTeamID: 218 | iOSManualSigningProvisioningProfileID: 219 | tvOSManualSigningProvisioningProfileID: 220 | iOSManualSigningProvisioningProfileType: 0 221 | tvOSManualSigningProvisioningProfileType: 0 222 | appleEnableAutomaticSigning: 0 223 | iOSRequireARKit: 0 224 | iOSAutomaticallyDetectAndAddCapabilities: 1 225 | appleEnableProMotion: 0 226 | shaderPrecisionModel: 0 227 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 228 | templatePackageId: com.unity.template.3d@5.0.4 229 | templateDefaultScene: Assets/Scenes/SampleScene.unity 230 | useCustomMainManifest: 0 231 | useCustomLauncherManifest: 0 232 | useCustomMainGradleTemplate: 0 233 | useCustomLauncherGradleManifest: 0 234 | useCustomBaseGradleTemplate: 0 235 | useCustomGradlePropertiesTemplate: 0 236 | useCustomProguardFile: 0 237 | AndroidTargetArchitectures: 1 238 | AndroidSplashScreenScale: 0 239 | androidSplashScreen: {fileID: 0} 240 | AndroidKeystoreName: 241 | AndroidKeyaliasName: 242 | AndroidBuildApkPerCpuArchitecture: 0 243 | AndroidTVCompatibility: 0 244 | AndroidIsGame: 1 245 | AndroidEnableTango: 0 246 | androidEnableBanner: 1 247 | androidUseLowAccuracyLocation: 0 248 | androidUseCustomKeystore: 0 249 | m_AndroidBanners: 250 | - width: 320 251 | height: 180 252 | banner: {fileID: 0} 253 | androidGamepadSupportLevel: 0 254 | AndroidMinifyWithR8: 0 255 | AndroidMinifyRelease: 0 256 | AndroidMinifyDebug: 0 257 | AndroidValidateAppBundleSize: 1 258 | AndroidAppBundleSizeToValidate: 150 259 | m_BuildTargetIcons: [] 260 | m_BuildTargetPlatformIcons: [] 261 | m_BuildTargetBatching: 262 | - m_BuildTarget: Standalone 263 | m_StaticBatching: 1 264 | m_DynamicBatching: 0 265 | - m_BuildTarget: tvOS 266 | m_StaticBatching: 1 267 | m_DynamicBatching: 0 268 | - m_BuildTarget: Android 269 | m_StaticBatching: 1 270 | m_DynamicBatching: 0 271 | - m_BuildTarget: iPhone 272 | m_StaticBatching: 1 273 | m_DynamicBatching: 0 274 | - m_BuildTarget: WebGL 275 | m_StaticBatching: 0 276 | m_DynamicBatching: 0 277 | m_BuildTargetGraphicsJobs: 278 | - m_BuildTarget: MacStandaloneSupport 279 | m_GraphicsJobs: 0 280 | - m_BuildTarget: Switch 281 | m_GraphicsJobs: 1 282 | - m_BuildTarget: MetroSupport 283 | m_GraphicsJobs: 1 284 | - m_BuildTarget: AppleTVSupport 285 | m_GraphicsJobs: 0 286 | - m_BuildTarget: BJMSupport 287 | m_GraphicsJobs: 1 288 | - m_BuildTarget: LinuxStandaloneSupport 289 | m_GraphicsJobs: 1 290 | - m_BuildTarget: PS4Player 291 | m_GraphicsJobs: 1 292 | - m_BuildTarget: iOSSupport 293 | m_GraphicsJobs: 0 294 | - m_BuildTarget: WindowsStandaloneSupport 295 | m_GraphicsJobs: 1 296 | - m_BuildTarget: XboxOnePlayer 297 | m_GraphicsJobs: 1 298 | - m_BuildTarget: LuminSupport 299 | m_GraphicsJobs: 0 300 | - m_BuildTarget: AndroidPlayer 301 | m_GraphicsJobs: 0 302 | - m_BuildTarget: WebGLSupport 303 | m_GraphicsJobs: 0 304 | m_BuildTargetGraphicsJobMode: 305 | - m_BuildTarget: PS4Player 306 | m_GraphicsJobMode: 0 307 | - m_BuildTarget: XboxOnePlayer 308 | m_GraphicsJobMode: 0 309 | m_BuildTargetGraphicsAPIs: 310 | - m_BuildTarget: AndroidPlayer 311 | m_APIs: 150000000b000000 312 | m_Automatic: 0 313 | - m_BuildTarget: iOSSupport 314 | m_APIs: 10000000 315 | m_Automatic: 1 316 | - m_BuildTarget: AppleTVSupport 317 | m_APIs: 10000000 318 | m_Automatic: 1 319 | - m_BuildTarget: WebGLSupport 320 | m_APIs: 0b000000 321 | m_Automatic: 1 322 | m_BuildTargetVRSettings: 323 | - m_BuildTarget: Standalone 324 | m_Enabled: 0 325 | m_Devices: 326 | - Oculus 327 | - OpenVR 328 | openGLRequireES31: 0 329 | openGLRequireES31AEP: 0 330 | openGLRequireES32: 0 331 | m_TemplateCustomTags: {} 332 | mobileMTRendering: 333 | Android: 1 334 | iPhone: 1 335 | tvOS: 1 336 | m_BuildTargetGroupLightmapEncodingQuality: [] 337 | m_BuildTargetGroupLightmapSettings: [] 338 | m_BuildTargetNormalMapEncoding: [] 339 | playModeTestRunnerEnabled: 0 340 | runPlayModeTestAsEditModeTest: 0 341 | actionOnDotNetUnhandledException: 1 342 | enableInternalProfiler: 0 343 | logObjCUncaughtExceptions: 1 344 | enableCrashReportAPI: 0 345 | cameraUsageDescription: 346 | locationUsageDescription: 347 | microphoneUsageDescription: 348 | switchNMETAOverride: 349 | switchNetLibKey: 350 | switchSocketMemoryPoolSize: 6144 351 | switchSocketAllocatorPoolSize: 128 352 | switchSocketConcurrencyLimit: 14 353 | switchScreenResolutionBehavior: 2 354 | switchUseCPUProfiler: 0 355 | switchUseGOLDLinker: 0 356 | switchApplicationID: 0x01004b9000490000 357 | switchNSODependencies: 358 | switchTitleNames_0: 359 | switchTitleNames_1: 360 | switchTitleNames_2: 361 | switchTitleNames_3: 362 | switchTitleNames_4: 363 | switchTitleNames_5: 364 | switchTitleNames_6: 365 | switchTitleNames_7: 366 | switchTitleNames_8: 367 | switchTitleNames_9: 368 | switchTitleNames_10: 369 | switchTitleNames_11: 370 | switchTitleNames_12: 371 | switchTitleNames_13: 372 | switchTitleNames_14: 373 | switchPublisherNames_0: 374 | switchPublisherNames_1: 375 | switchPublisherNames_2: 376 | switchPublisherNames_3: 377 | switchPublisherNames_4: 378 | switchPublisherNames_5: 379 | switchPublisherNames_6: 380 | switchPublisherNames_7: 381 | switchPublisherNames_8: 382 | switchPublisherNames_9: 383 | switchPublisherNames_10: 384 | switchPublisherNames_11: 385 | switchPublisherNames_12: 386 | switchPublisherNames_13: 387 | switchPublisherNames_14: 388 | switchIcons_0: {fileID: 0} 389 | switchIcons_1: {fileID: 0} 390 | switchIcons_2: {fileID: 0} 391 | switchIcons_3: {fileID: 0} 392 | switchIcons_4: {fileID: 0} 393 | switchIcons_5: {fileID: 0} 394 | switchIcons_6: {fileID: 0} 395 | switchIcons_7: {fileID: 0} 396 | switchIcons_8: {fileID: 0} 397 | switchIcons_9: {fileID: 0} 398 | switchIcons_10: {fileID: 0} 399 | switchIcons_11: {fileID: 0} 400 | switchIcons_12: {fileID: 0} 401 | switchIcons_13: {fileID: 0} 402 | switchIcons_14: {fileID: 0} 403 | switchSmallIcons_0: {fileID: 0} 404 | switchSmallIcons_1: {fileID: 0} 405 | switchSmallIcons_2: {fileID: 0} 406 | switchSmallIcons_3: {fileID: 0} 407 | switchSmallIcons_4: {fileID: 0} 408 | switchSmallIcons_5: {fileID: 0} 409 | switchSmallIcons_6: {fileID: 0} 410 | switchSmallIcons_7: {fileID: 0} 411 | switchSmallIcons_8: {fileID: 0} 412 | switchSmallIcons_9: {fileID: 0} 413 | switchSmallIcons_10: {fileID: 0} 414 | switchSmallIcons_11: {fileID: 0} 415 | switchSmallIcons_12: {fileID: 0} 416 | switchSmallIcons_13: {fileID: 0} 417 | switchSmallIcons_14: {fileID: 0} 418 | switchManualHTML: 419 | switchAccessibleURLs: 420 | switchLegalInformation: 421 | switchMainThreadStackSize: 1048576 422 | switchPresenceGroupId: 423 | switchLogoHandling: 0 424 | switchReleaseVersion: 0 425 | switchDisplayVersion: 1.0.0 426 | switchStartupUserAccount: 0 427 | switchTouchScreenUsage: 0 428 | switchSupportedLanguagesMask: 0 429 | switchLogoType: 0 430 | switchApplicationErrorCodeCategory: 431 | switchUserAccountSaveDataSize: 0 432 | switchUserAccountSaveDataJournalSize: 0 433 | switchApplicationAttribute: 0 434 | switchCardSpecSize: -1 435 | switchCardSpecClock: -1 436 | switchRatingsMask: 0 437 | switchRatingsInt_0: 0 438 | switchRatingsInt_1: 0 439 | switchRatingsInt_2: 0 440 | switchRatingsInt_3: 0 441 | switchRatingsInt_4: 0 442 | switchRatingsInt_5: 0 443 | switchRatingsInt_6: 0 444 | switchRatingsInt_7: 0 445 | switchRatingsInt_8: 0 446 | switchRatingsInt_9: 0 447 | switchRatingsInt_10: 0 448 | switchRatingsInt_11: 0 449 | switchRatingsInt_12: 0 450 | switchLocalCommunicationIds_0: 451 | switchLocalCommunicationIds_1: 452 | switchLocalCommunicationIds_2: 453 | switchLocalCommunicationIds_3: 454 | switchLocalCommunicationIds_4: 455 | switchLocalCommunicationIds_5: 456 | switchLocalCommunicationIds_6: 457 | switchLocalCommunicationIds_7: 458 | switchParentalControl: 0 459 | switchAllowsScreenshot: 1 460 | switchAllowsVideoCapturing: 1 461 | switchAllowsRuntimeAddOnContentInstall: 0 462 | switchDataLossConfirmation: 0 463 | switchUserAccountLockEnabled: 0 464 | switchSystemResourceMemory: 16777216 465 | switchSupportedNpadStyles: 22 466 | switchNativeFsCacheSize: 32 467 | switchIsHoldTypeHorizontal: 0 468 | switchSupportedNpadCount: 8 469 | switchSocketConfigEnabled: 0 470 | switchTcpInitialSendBufferSize: 32 471 | switchTcpInitialReceiveBufferSize: 64 472 | switchTcpAutoSendBufferSizeMax: 256 473 | switchTcpAutoReceiveBufferSizeMax: 256 474 | switchUdpSendBufferSize: 9 475 | switchUdpReceiveBufferSize: 42 476 | switchSocketBufferEfficiency: 4 477 | switchSocketInitializeEnabled: 1 478 | switchNetworkInterfaceManagerInitializeEnabled: 1 479 | switchPlayerConnectionEnabled: 1 480 | switchUseNewStyleFilepaths: 0 481 | ps4NPAgeRating: 12 482 | ps4NPTitleSecret: 483 | ps4NPTrophyPackPath: 484 | ps4ParentalLevel: 11 485 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 486 | ps4Category: 0 487 | ps4MasterVersion: 01.00 488 | ps4AppVersion: 01.00 489 | ps4AppType: 0 490 | ps4ParamSfxPath: 491 | ps4VideoOutPixelFormat: 0 492 | ps4VideoOutInitialWidth: 1920 493 | ps4VideoOutBaseModeInitialWidth: 1920 494 | ps4VideoOutReprojectionRate: 60 495 | ps4PronunciationXMLPath: 496 | ps4PronunciationSIGPath: 497 | ps4BackgroundImagePath: 498 | ps4StartupImagePath: 499 | ps4StartupImagesFolder: 500 | ps4IconImagesFolder: 501 | ps4SaveDataImagePath: 502 | ps4SdkOverride: 503 | ps4BGMPath: 504 | ps4ShareFilePath: 505 | ps4ShareOverlayImagePath: 506 | ps4PrivacyGuardImagePath: 507 | ps4ExtraSceSysFile: 508 | ps4NPtitleDatPath: 509 | ps4RemotePlayKeyAssignment: -1 510 | ps4RemotePlayKeyMappingDir: 511 | ps4PlayTogetherPlayerCount: 0 512 | ps4EnterButtonAssignment: 1 513 | ps4ApplicationParam1: 0 514 | ps4ApplicationParam2: 0 515 | ps4ApplicationParam3: 0 516 | ps4ApplicationParam4: 0 517 | ps4DownloadDataSize: 0 518 | ps4GarlicHeapSize: 2048 519 | ps4ProGarlicHeapSize: 2560 520 | playerPrefsMaxSize: 32768 521 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 522 | ps4pnSessions: 1 523 | ps4pnPresence: 1 524 | ps4pnFriends: 1 525 | ps4pnGameCustomData: 1 526 | playerPrefsSupport: 0 527 | enableApplicationExit: 0 528 | resetTempFolder: 1 529 | restrictedAudioUsageRights: 0 530 | ps4UseResolutionFallback: 0 531 | ps4ReprojectionSupport: 0 532 | ps4UseAudio3dBackend: 0 533 | ps4UseLowGarlicFragmentationMode: 1 534 | ps4SocialScreenEnabled: 0 535 | ps4ScriptOptimizationLevel: 0 536 | ps4Audio3dVirtualSpeakerCount: 14 537 | ps4attribCpuUsage: 0 538 | ps4PatchPkgPath: 539 | ps4PatchLatestPkgPath: 540 | ps4PatchChangeinfoPath: 541 | ps4PatchDayOne: 0 542 | ps4attribUserManagement: 0 543 | ps4attribMoveSupport: 0 544 | ps4attrib3DSupport: 0 545 | ps4attribShareSupport: 0 546 | ps4attribExclusiveVR: 0 547 | ps4disableAutoHideSplash: 0 548 | ps4videoRecordingFeaturesUsed: 0 549 | ps4contentSearchFeaturesUsed: 0 550 | ps4CompatibilityPS5: 0 551 | ps4GPU800MHz: 1 552 | ps4attribEyeToEyeDistanceSettingVR: 0 553 | ps4IncludedModules: [] 554 | ps4attribVROutputEnabled: 0 555 | monoEnv: 556 | splashScreenBackgroundSourceLandscape: {fileID: 0} 557 | splashScreenBackgroundSourcePortrait: {fileID: 0} 558 | blurSplashScreenBackground: 1 559 | spritePackerPolicy: 560 | webGLMemorySize: 16 561 | webGLExceptionSupport: 1 562 | webGLNameFilesAsHashes: 0 563 | webGLDataCaching: 1 564 | webGLDebugSymbols: 0 565 | webGLEmscriptenArgs: 566 | webGLModulesDirectory: 567 | webGLTemplate: APPLICATION:Default 568 | webGLAnalyzeBuildSize: 0 569 | webGLUseEmbeddedResources: 0 570 | webGLCompressionFormat: 1 571 | webGLWasmArithmeticExceptions: 0 572 | webGLLinkerTarget: 1 573 | webGLThreadsSupport: 0 574 | webGLDecompressionFallback: 0 575 | scriptingDefineSymbols: {} 576 | additionalCompilerArguments: {} 577 | platformArchitecture: {} 578 | scriptingBackend: {} 579 | il2cppCompilerConfiguration: {} 580 | managedStrippingLevel: {} 581 | incrementalIl2cppBuild: {} 582 | suppressCommonWarnings: 1 583 | allowUnsafeCode: 0 584 | useDeterministicCompilation: 1 585 | useReferenceAssemblies: 1 586 | enableRoslynAnalyzers: 1 587 | additionalIl2CppArgs: 588 | scriptingRuntimeVersion: 1 589 | gcIncremental: 1 590 | assemblyVersionValidation: 1 591 | gcWBarrierValidation: 0 592 | apiCompatibilityLevelPerPlatform: {} 593 | m_RenderingPath: 1 594 | m_MobileRenderingPath: 1 595 | metroPackageName: Template_3D 596 | metroPackageVersion: 597 | metroCertificatePath: 598 | metroCertificatePassword: 599 | metroCertificateSubject: 600 | metroCertificateIssuer: 601 | metroCertificateNotAfter: 0000000000000000 602 | metroApplicationDescription: Template_3D 603 | wsaImages: {} 604 | metroTileShortName: 605 | metroTileShowName: 0 606 | metroMediumTileShowName: 0 607 | metroLargeTileShowName: 0 608 | metroWideTileShowName: 0 609 | metroSupportStreamingInstall: 0 610 | metroLastRequiredScene: 0 611 | metroDefaultTileSize: 1 612 | metroTileForegroundText: 2 613 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 614 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1} 615 | metroSplashScreenUseBackgroundColor: 0 616 | platformCapabilities: {} 617 | metroTargetDeviceFamilies: {} 618 | metroFTAName: 619 | metroFTAFileTypes: [] 620 | metroProtocolName: 621 | XboxOneProductId: 622 | XboxOneUpdateKey: 623 | XboxOneSandboxId: 624 | XboxOneContentId: 625 | XboxOneTitleId: 626 | XboxOneSCId: 627 | XboxOneGameOsOverridePath: 628 | XboxOnePackagingOverridePath: 629 | XboxOneAppManifestOverridePath: 630 | XboxOneVersion: 1.0.0.0 631 | XboxOnePackageEncryption: 0 632 | XboxOnePackageUpdateGranularity: 2 633 | XboxOneDescription: 634 | XboxOneLanguage: 635 | - enus 636 | XboxOneCapability: [] 637 | XboxOneGameRating: {} 638 | XboxOneIsContentPackage: 0 639 | XboxOneEnhancedXboxCompatibilityMode: 0 640 | XboxOneEnableGPUVariability: 1 641 | XboxOneSockets: {} 642 | XboxOneSplashScreen: {fileID: 0} 643 | XboxOneAllowedProductIds: [] 644 | XboxOnePersistentLocalStorageSize: 0 645 | XboxOneXTitleMemory: 8 646 | XboxOneOverrideIdentityName: 647 | XboxOneOverrideIdentityPublisher: 648 | vrEditorSettings: {} 649 | cloudServicesEnabled: 650 | UNet: 1 651 | luminIcon: 652 | m_Name: 653 | m_ModelFolderPath: 654 | m_PortalFolderPath: 655 | luminCert: 656 | m_CertPath: 657 | m_SignPackage: 1 658 | luminIsChannelApp: 0 659 | luminVersion: 660 | m_VersionCode: 1 661 | m_VersionName: 662 | apiCompatibilityLevel: 6 663 | activeInputHandler: 0 664 | cloudProjectId: 665 | framebufferDepthMemorylessMode: 0 666 | qualitySettingsNames: [] 667 | projectName: 668 | organizationId: 669 | cloudEnabled: 0 670 | legacyClampBlendShapeWeights: 0 671 | virtualTexturingSupportEnabled: 0 672 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2020.2.4f1 2 | m_EditorVersionWithRevision: 2020.2.4f1 (becced5a802b) 3 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Stadia: 5 227 | Standalone: 5 228 | WebGL: 3 229 | Windows Store Apps: 5 230 | XboxOne: 5 231 | iPhone: 2 232 | tvOS: 2 233 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /Unity/PackageProject/ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /UnityStreamDeck.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.29709.97 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "UnityStreamDeck", "UnityStreamDeck\UnityStreamDeck.csproj", "{071180B4-3A88-4C8D-8C28-7DB6745262F2}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{B9CF39D6-D856-4246-A787-F37FC1FA516A}" 9 | EndProject 10 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A0D6D53E-B28A-4396-9B21-082A8D8F86D3}" 11 | ProjectSection(SolutionItems) = preProject 12 | .editorconfig = .editorconfig 13 | .gitattributes = .gitattributes 14 | .gitignore = .gitignore 15 | CHANGELOG.md = CHANGELOG.md 16 | LICENSE = LICENSE 17 | README.md = README.md 18 | EndProjectSection 19 | EndProject 20 | Global 21 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 22 | Debug|Any CPU = Debug|Any CPU 23 | Release|Any CPU = Release|Any CPU 24 | EndGlobalSection 25 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 26 | {071180B4-3A88-4C8D-8C28-7DB6745262F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {071180B4-3A88-4C8D-8C28-7DB6745262F2}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {071180B4-3A88-4C8D-8C28-7DB6745262F2}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {071180B4-3A88-4C8D-8C28-7DB6745262F2}.Release|Any CPU.Build.0 = Release|Any CPU 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(NestedProjects) = preSolution 35 | {071180B4-3A88-4C8D-8C28-7DB6745262F2} = {B9CF39D6-D856-4246-A787-F37FC1FA516A} 36 | EndGlobalSection 37 | GlobalSection(ExtensibilityGlobals) = postSolution 38 | SolutionGuid = {4A495931-DA79-4B60-ABB5-A5EE2FEFFA01} 39 | EndGlobalSection 40 | EndGlobal 41 | -------------------------------------------------------------------------------- /UnityStreamDeck/.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Ll]og/ 33 | [Ll]ogs/ 34 | 35 | # Visual Studio 2015/2017 cache/options directory 36 | .vs/ 37 | # Uncomment if you have tasks that create the project's static files in wwwroot 38 | #wwwroot/ 39 | 40 | # Visual Studio 2017 auto generated files 41 | Generated\ Files/ 42 | 43 | # MSTest test Results 44 | [Tt]est[Rr]esult*/ 45 | [Bb]uild[Ll]og.* 46 | 47 | # NUnit 48 | *.VisualState.xml 49 | TestResult.xml 50 | nunit-*.xml 51 | 52 | # Build Results of an ATL Project 53 | [Dd]ebugPS/ 54 | [Rr]eleasePS/ 55 | dlldata.c 56 | 57 | # Benchmark Results 58 | BenchmarkDotNet.Artifacts/ 59 | 60 | # .NET Core 61 | project.lock.json 62 | project.fragment.lock.json 63 | artifacts/ 64 | 65 | # ASP.NET Scaffolding 66 | ScaffoldingReadMe.txt 67 | 68 | # StyleCop 69 | StyleCopReport.xml 70 | 71 | # Files built by Visual Studio 72 | *_i.c 73 | *_p.c 74 | *_h.h 75 | *.ilk 76 | *.meta 77 | *.obj 78 | *.iobj 79 | *.pch 80 | *.pdb 81 | *.ipdb 82 | *.pgc 83 | *.pgd 84 | *.rsp 85 | *.sbr 86 | *.tlb 87 | *.tli 88 | *.tlh 89 | *.tmp 90 | *.tmp_proj 91 | *_wpftmp.csproj 92 | *.log 93 | *.vspscc 94 | *.vssscc 95 | .builds 96 | *.pidb 97 | *.svclog 98 | *.scc 99 | 100 | # Chutzpah Test files 101 | _Chutzpah* 102 | 103 | # Visual C++ cache files 104 | ipch/ 105 | *.aps 106 | *.ncb 107 | *.opendb 108 | *.opensdf 109 | *.sdf 110 | *.cachefile 111 | *.VC.db 112 | *.VC.VC.opendb 113 | 114 | # Visual Studio profiler 115 | *.psess 116 | *.vsp 117 | *.vspx 118 | *.sap 119 | 120 | # Visual Studio Trace Files 121 | *.e2e 122 | 123 | # TFS 2012 Local Workspace 124 | $tf/ 125 | 126 | # Guidance Automation Toolkit 127 | *.gpState 128 | 129 | # ReSharper is a .NET coding add-in 130 | _ReSharper*/ 131 | *.[Rr]e[Ss]harper 132 | *.DotSettings.user 133 | 134 | # TeamCity is a build add-in 135 | _TeamCity* 136 | 137 | # DotCover is a Code Coverage Tool 138 | *.dotCover 139 | 140 | # AxoCover is a Code Coverage Tool 141 | .axoCover/* 142 | !.axoCover/settings.json 143 | 144 | # Coverlet is a free, cross platform Code Coverage Tool 145 | coverage*.json 146 | coverage*.xml 147 | coverage*.info 148 | 149 | # Visual Studio code coverage results 150 | *.coverage 151 | *.coveragexml 152 | 153 | # NCrunch 154 | _NCrunch_* 155 | .*crunch*.local.xml 156 | nCrunchTemp_* 157 | 158 | # MightyMoose 159 | *.mm.* 160 | AutoTest.Net/ 161 | 162 | # Web workbench (sass) 163 | .sass-cache/ 164 | 165 | # Installshield output folder 166 | [Ee]xpress/ 167 | 168 | # DocProject is a documentation generator add-in 169 | DocProject/buildhelp/ 170 | DocProject/Help/*.HxT 171 | DocProject/Help/*.HxC 172 | DocProject/Help/*.hhc 173 | DocProject/Help/*.hhk 174 | DocProject/Help/*.hhp 175 | DocProject/Help/Html2 176 | DocProject/Help/html 177 | 178 | # Click-Once directory 179 | publish/ 180 | 181 | # Publish Web Output 182 | *.[Pp]ublish.xml 183 | *.azurePubxml 184 | # Note: Comment the next line if you want to checkin your web deploy settings, 185 | # but database connection strings (with potential passwords) will be unencrypted 186 | *.pubxml 187 | *.publishproj 188 | 189 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 190 | # checkin your Azure Web App publish settings, but sensitive information contained 191 | # in these scripts will be unencrypted 192 | PublishScripts/ 193 | 194 | # NuGet Packages 195 | *.nupkg 196 | # NuGet Symbol Packages 197 | *.snupkg 198 | # The packages folder can be ignored because of Package Restore 199 | **/[Pp]ackages/* 200 | # except build/, which is used as an MSBuild target. 201 | !**/[Pp]ackages/build/ 202 | # Uncomment if necessary however generally it will be regenerated when needed 203 | #!**/[Pp]ackages/repositories.config 204 | # NuGet v3's project.json files produces more ignorable files 205 | *.nuget.props 206 | *.nuget.targets 207 | 208 | # Microsoft Azure Build Output 209 | csx/ 210 | *.build.csdef 211 | 212 | # Microsoft Azure Emulator 213 | ecf/ 214 | rcf/ 215 | 216 | # Windows Store app package directories and files 217 | AppPackages/ 218 | BundleArtifacts/ 219 | Package.StoreAssociation.xml 220 | _pkginfo.txt 221 | *.appx 222 | *.appxbundle 223 | *.appxupload 224 | 225 | # Visual Studio cache files 226 | # files ending in .cache can be ignored 227 | *.[Cc]ache 228 | # but keep track of directories ending in .cache 229 | !?*.[Cc]ache/ 230 | 231 | # Others 232 | ClientBin/ 233 | ~$* 234 | *~ 235 | *.dbmdl 236 | *.dbproj.schemaview 237 | *.jfm 238 | *.pfx 239 | *.publishsettings 240 | orleans.codegen.cs 241 | 242 | # Including strong name files can present a security risk 243 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 244 | #*.snk 245 | 246 | # Since there are multiple workflows, uncomment next line to ignore bower_components 247 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 248 | #bower_components/ 249 | 250 | # RIA/Silverlight projects 251 | Generated_Code/ 252 | 253 | # Backup & report files from converting an old project file 254 | # to a newer Visual Studio version. Backup files are not needed, 255 | # because we have git ;-) 256 | _UpgradeReport_Files/ 257 | Backup*/ 258 | UpgradeLog*.XML 259 | UpgradeLog*.htm 260 | ServiceFabricBackup/ 261 | *.rptproj.bak 262 | 263 | # SQL Server files 264 | *.mdf 265 | *.ldf 266 | *.ndf 267 | 268 | # Business Intelligence projects 269 | *.rdl.data 270 | *.bim.layout 271 | *.bim_*.settings 272 | *.rptproj.rsuser 273 | *- [Bb]ackup.rdl 274 | *- [Bb]ackup ([0-9]).rdl 275 | *- [Bb]ackup ([0-9][0-9]).rdl 276 | 277 | # Microsoft Fakes 278 | FakesAssemblies/ 279 | 280 | # GhostDoc plugin setting file 281 | *.GhostDoc.xml 282 | 283 | # Node.js Tools for Visual Studio 284 | .ntvs_analysis.dat 285 | node_modules/ 286 | 287 | # Visual Studio 6 build log 288 | *.plg 289 | 290 | # Visual Studio 6 workspace options file 291 | *.opt 292 | 293 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 294 | *.vbw 295 | 296 | # Visual Studio LightSwitch build output 297 | **/*.HTMLClient/GeneratedArtifacts 298 | **/*.DesktopClient/GeneratedArtifacts 299 | **/*.DesktopClient/ModelManifest.xml 300 | **/*.Server/GeneratedArtifacts 301 | **/*.Server/ModelManifest.xml 302 | _Pvt_Extensions 303 | 304 | # Paket dependency manager 305 | .paket/paket.exe 306 | paket-files/ 307 | 308 | # FAKE - F# Make 309 | .fake/ 310 | 311 | # CodeRush personal settings 312 | .cr/personal 313 | 314 | # Python Tools for Visual Studio (PTVS) 315 | __pycache__/ 316 | *.pyc 317 | 318 | # Cake - Uncomment if you are using it 319 | # tools/** 320 | # !tools/packages.config 321 | 322 | # Tabs Studio 323 | *.tss 324 | 325 | # Telerik's JustMock configuration file 326 | *.jmconfig 327 | 328 | # BizTalk build output 329 | *.btp.cs 330 | *.btm.cs 331 | *.odx.cs 332 | *.xsd.cs 333 | 334 | # OpenCover UI analysis results 335 | OpenCover/ 336 | 337 | # Azure Stream Analytics local run output 338 | ASALocalRun/ 339 | 340 | # MSBuild Binary and Structured Log 341 | *.binlog 342 | 343 | # NVidia Nsight GPU debugger configuration file 344 | *.nvuser 345 | 346 | # MFractors (Xamarin productivity tool) working folder 347 | .mfractor/ 348 | 349 | # Local History for Visual Studio 350 | .localhistory/ 351 | 352 | # BeatPulse healthcheck temp database 353 | healthchecksdb 354 | 355 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 356 | MigrationBackup/ 357 | 358 | # Ionide (cross platform F# VS Code tools) working folder 359 | .ionide/ 360 | 361 | # Fody - auto-generated XML schema 362 | FodyWeavers.xsd -------------------------------------------------------------------------------- /UnityStreamDeck/MessageHandler.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace UnityStreamDeck 4 | { 5 | public class MessageHandler 6 | { 7 | public Type Type { get; set; } 8 | 9 | public Delegate Handler { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /UnityStreamDeck/Messages.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace UnityStreamDeck 4 | { 5 | [Serializable] 6 | public class Message 7 | { 8 | public string Id; 9 | } 10 | 11 | [Serializable] 12 | public class ExecuteMenuMessage : Message 13 | { 14 | public string Path; 15 | } 16 | 17 | [Serializable] 18 | public class PasteComponentMessage : Message 19 | { 20 | public bool AsNew; 21 | } 22 | 23 | [Serializable] 24 | public class ResetObjectMessage : Message 25 | { 26 | } 27 | 28 | [Serializable] 29 | public class RotateObjectMessage : Message 30 | { 31 | public string Axis; 32 | 33 | public float Angle; 34 | } 35 | 36 | [Serializable] 37 | public class SelectObjectMessage : Message 38 | { 39 | public string Name; 40 | 41 | public string Tag; 42 | } 43 | 44 | [Serializable] 45 | public class AddComponentMessage : Message 46 | { 47 | public string Name; 48 | } 49 | 50 | public enum ObjectState 51 | { 52 | Active = 0, 53 | Static = 1 54 | } 55 | 56 | [Serializable] 57 | public class ToggleObjectStateMessage : Message 58 | { 59 | public ObjectState State; 60 | } 61 | 62 | [Serializable] 63 | public class TogglePauseMessage : Message 64 | { 65 | } 66 | 67 | [Serializable] 68 | public class ToggleSceneGameMessage : Message 69 | { 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /UnityStreamDeck/StreamDeckLink.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEditor; 4 | using UnityEditorInternal; 5 | using UnityEngine; 6 | using WebSocketSharp; 7 | using WebSocketSharp.Net; 8 | 9 | namespace UnityStreamDeck 10 | { 11 | [InitializeOnLoad] 12 | [ExecuteInEditMode] 13 | public class StreamDeckLink 14 | { 15 | private WebSocket webSocket; 16 | private bool disconnectedFromMessageServer; 17 | private double lastReconnectTime; 18 | private readonly float reconnectInterval = 5f; 19 | private readonly StreamDeckLinkConfiguration configuration; 20 | private readonly Dictionary messagesHandlers = new Dictionary(); 21 | private readonly Queue messages = new Queue(); 22 | private readonly Dictionary components = new Dictionary(); 23 | private string sceneViewPath = "Window/Scene"; 24 | private string gameViewPath = "Window/Game"; 25 | 26 | private readonly Dictionary editorFeaturesHandlers = new Dictionary(); 27 | 28 | static StreamDeckLink() 29 | { 30 | StreamDeckLink liveLink = new StreamDeckLink(StreamDeckLinkConfiguration.Instance); 31 | liveLink.Initialize(); 32 | } 33 | 34 | public StreamDeckLink(StreamDeckLinkConfiguration configuration) => this.configuration = configuration; 35 | 36 | private void Initialize() 37 | { 38 | configuration.ConfigurationChanged += Configuration_ConfigurationChanged; 39 | 40 | if (InternalEditorUtility.GetUnityVersion().CompareTo(new Version(2019, 1)) >= 0) 41 | { 42 | sceneViewPath = "Window/General/Scene"; 43 | gameViewPath = "Window/General/Game"; 44 | } 45 | 46 | if (configuration.Enabled) 47 | { 48 | RegisterFeaturesMessages(); 49 | RegisterUnityEvents(); 50 | ConnectToMessageServer(); 51 | } 52 | } 53 | 54 | private void RegisterFeatureMessageHandler(Action handler) where T : Message 55 | { 56 | Type type = typeof(T); 57 | 58 | messagesHandlers.Add(type.Name, new MessageHandler() 59 | { 60 | Type = type, 61 | Handler = handler 62 | }); 63 | } 64 | 65 | private void RegisterFeaturesMessages() 66 | { 67 | RegisterFeatureMessageHandler(ExecuteMenu); 68 | RegisterFeatureMessageHandler(RotateObject); 69 | RegisterFeatureMessageHandler(ResetObject); 70 | RegisterFeatureMessageHandler(PasteComponent); 71 | RegisterFeatureMessageHandler(TogglePauseMode); 72 | RegisterFeatureMessageHandler(ToggleSceneGame); 73 | RegisterFeatureMessageHandler(ToggleObjectState); 74 | RegisterFeatureMessageHandler(SelectObject); 75 | RegisterFeatureMessageHandler(AddComponent); 76 | } 77 | 78 | private void UnregisterFeaturesMessages() => messagesHandlers.Clear(); 79 | 80 | private void RegisterUnityEvents() 81 | { 82 | EditorApplication.update += EditorApplication_update; 83 | 84 | AssemblyReloadEvents.afterAssemblyReload += AssemblyReloadEvents_afterAssemblyReload; 85 | } 86 | 87 | private void UnregisterUnityEvents() 88 | { 89 | EditorApplication.update -= EditorApplication_update; 90 | 91 | AssemblyReloadEvents.afterAssemblyReload -= AssemblyReloadEvents_afterAssemblyReload; 92 | } 93 | 94 | private void Configuration_ConfigurationChanged() 95 | { 96 | Log("Configuration changed", ignoreVerbose: true); 97 | 98 | DisconnectFromMessageServer(); 99 | UnregisterUnityEvents(); 100 | UnregisterFeaturesMessages(); 101 | 102 | if (configuration.Enabled) 103 | { 104 | RegisterUnityEvents(); 105 | RegisterFeaturesMessages(); 106 | } 107 | } 108 | 109 | private void ConnectToMessageServer() 110 | { 111 | if (webSocket is null) 112 | { 113 | webSocket = new WebSocket($"ws://{configuration.ServerHost}:{configuration.ServerPort}"); 114 | webSocket.SetCookie(new Cookie("X-Unity-PID", System.Diagnostics.Process.GetCurrentProcess().Id.ToString())); 115 | webSocket.OnMessage += (sender, e) => OnMessageReceivedFromMessageServer(e); 116 | webSocket.OnClose += (s, e) => OnDisconnectedFromMessageServer(e.Code, e.Reason); 117 | webSocket.OnError += (s, e) => Debug.LogError($"Stream Deck - Error: {e.Message}"); 118 | webSocket.OnOpen += (s, e) => OnConnectedToMessageServer(); 119 | } 120 | 121 | Log($"Connecting to {webSocket.Url.Host}:{webSocket.Url.Port}..."); 122 | 123 | webSocket.ConnectAsync(); 124 | } 125 | 126 | private void DisconnectFromMessageServer() 127 | { 128 | webSocket?.Close(CloseStatusCode.Normal); 129 | webSocket = null; 130 | 131 | disconnectedFromMessageServer = true; 132 | } 133 | 134 | private void OnConnectedToMessageServer() 135 | { 136 | Log("Connected"); 137 | 138 | disconnectedFromMessageServer = false; 139 | } 140 | 141 | private void OnDisconnectedFromMessageServer(ushort code, string reason) 142 | { 143 | Log($"Disconnected ({code}/{reason})"); 144 | 145 | disconnectedFromMessageServer = true; 146 | } 147 | 148 | private void EditorApplication_update() 149 | { 150 | HandleStreamDeckConnection(); 151 | 152 | HandleMessages(); 153 | } 154 | 155 | private void HandleStreamDeckConnection() 156 | { 157 | if (configuration.Enabled 158 | && disconnectedFromMessageServer) 159 | { 160 | if (EditorApplication.timeSinceStartup - lastReconnectTime > reconnectInterval) 161 | { 162 | disconnectedFromMessageServer = false; 163 | 164 | ConnectToMessageServer(); 165 | 166 | lastReconnectTime = EditorApplication.timeSinceStartup; 167 | } 168 | } 169 | } 170 | 171 | private void AssemblyReloadEvents_afterAssemblyReload() => CacheComponents(); 172 | 173 | private void CacheComponents() 174 | { 175 | if (InternalEditorUtility.GetUnityVersion().CompareTo(new Version(2019, 2)) >= 0) 176 | { 177 | Log("Caching components..."); 178 | 179 | components.Clear(); 180 | 181 | foreach (Type type in TypeCache.GetTypesDerivedFrom()) 182 | { 183 | if (configuration.Debug) 184 | { 185 | Log($"Cached component {type.Name}", ignoreVerbose: true); 186 | } 187 | 188 | components[type.Name.ToLower()] = type; 189 | } 190 | } 191 | } 192 | 193 | private void HandleMessages() 194 | { 195 | if (messages.Count > 0) 196 | { 197 | string message = messages.Dequeue(); 198 | 199 | string messageId = JsonUtility.FromJson(message).Id; 200 | 201 | if (configuration.Debug) 202 | { 203 | Log($"Message [{messageId}]: {message}", ignoreVerbose: true); 204 | } 205 | 206 | if (messagesHandlers.TryGetValue(messageId, out MessageHandler messageHandler)) 207 | { 208 | messageHandler?.Handler.DynamicInvoke(JsonUtility.FromJson(message, messageHandler.Type)); 209 | } 210 | } 211 | } 212 | 213 | private void OnMessageReceivedFromMessageServer(MessageEventArgs e) => messages.Enqueue(e.Data); 214 | 215 | private void ResetObject(ResetObjectMessage message) 216 | { 217 | foreach (GameObject gameObject in Selection.gameObjects) 218 | { 219 | Undo.RecordObject(gameObject.transform, "Reset Object"); 220 | 221 | gameObject.transform.SetPositionAndRotation(Vector3.zero, Quaternion.Euler(Vector3.zero)); 222 | } 223 | } 224 | 225 | private void RotateObject(RotateObjectMessage message) 226 | { 227 | Vector3 eulers = Vector3.zero; 228 | 229 | float desiredAngle = message.Angle > 0 ? message.Angle : 90; 230 | 231 | switch (message.Axis) 232 | { 233 | case "X": 234 | eulers.x = desiredAngle; 235 | break; 236 | case "Z": 237 | eulers.z = desiredAngle; 238 | break; 239 | default: 240 | eulers.y = desiredAngle; 241 | break; 242 | } 243 | 244 | foreach (GameObject gameObject in Selection.gameObjects) 245 | { 246 | Undo.RecordObject(gameObject.transform, "Rotate Object"); 247 | 248 | gameObject.transform.Rotate(eulers, Space.Self); 249 | } 250 | } 251 | 252 | private void PasteComponent(PasteComponentMessage message) 253 | { 254 | foreach (GameObject gameObject in Selection.gameObjects) 255 | { 256 | Undo.RecordObject(gameObject, "Paste Component"); 257 | 258 | ComponentUtility.PasteComponentAsNew(gameObject); 259 | } 260 | } 261 | 262 | private void ExecuteMenu(ExecuteMenuMessage message) 263 | { 264 | if (!string.IsNullOrEmpty(message.Path)) 265 | { 266 | EditorApplication.ExecuteMenuItem(message.Path); 267 | } 268 | } 269 | 270 | public void AddComponent(AddComponentMessage message) 271 | { 272 | if (components.TryGetValue(message.Name.ToLower(), out Type component)) 273 | { 274 | foreach (GameObject gameObject in Selection.gameObjects) 275 | { 276 | Undo.RecordObject(gameObject, "Add Component"); 277 | 278 | gameObject.AddComponent(component); 279 | } 280 | } 281 | } 282 | 283 | private void TogglePauseMode(TogglePauseMessage message) 284 | { 285 | if (EditorApplication.isPlaying) 286 | { 287 | EditorApplication.isPaused = !EditorApplication.isPaused; 288 | } 289 | } 290 | 291 | private void ToggleSceneGame(ToggleSceneGameMessage message) 292 | { 293 | if (EditorWindow.focusedWindow != null) 294 | { 295 | if (EditorWindow.focusedWindow.GetType() == typeof(SceneView)) 296 | { 297 | EditorApplication.ExecuteMenuItem(gameViewPath); 298 | } 299 | else 300 | { 301 | EditorApplication.ExecuteMenuItem(sceneViewPath); 302 | } 303 | } 304 | } 305 | 306 | public void ToggleObjectState(ToggleObjectStateMessage message) 307 | { 308 | foreach (GameObject gameObject in Selection.gameObjects) 309 | { 310 | Undo.RecordObject(gameObject, "Toggle Object State"); 311 | 312 | if (message.State == ObjectState.Active) 313 | { 314 | gameObject.SetActive(!gameObject.activeSelf); 315 | } 316 | else if (message.State == ObjectState.Static) 317 | { 318 | gameObject.isStatic = !gameObject.isStatic; 319 | } 320 | } 321 | } 322 | 323 | private void SelectObject(SelectObjectMessage message) 324 | { 325 | GameObject gameObject = null; 326 | 327 | if (!string.IsNullOrEmpty(message.Name)) 328 | { 329 | gameObject = GameObject.Find(message.Name); 330 | } 331 | 332 | if (!string.IsNullOrEmpty(message.Tag)) 333 | { 334 | gameObject = GameObject.FindWithTag(message.Tag); 335 | } 336 | 337 | if (gameObject != null) 338 | { 339 | Selection.activeGameObject = gameObject; 340 | } 341 | } 342 | 343 | private void Log(string message, bool ignoreVerbose = false) 344 | { 345 | if (ignoreVerbose || configuration.Verbose) 346 | { 347 | Debug.Log($"Stream Deck - {message}"); 348 | } 349 | } 350 | } 351 | } -------------------------------------------------------------------------------- /UnityStreamDeck/StreamDeckLinkConfiguration.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEditor; 3 | 4 | namespace UnityStreamDeck 5 | { 6 | public class StreamDeckLinkConfiguration 7 | { 8 | public string ServerHost { get; set; } 9 | 10 | public int ServerPort { get; set; } 11 | 12 | public bool Enabled { get; set; } 13 | 14 | public bool Verbose { get; set; } 15 | 16 | public bool Debug { get; set; } 17 | 18 | private static StreamDeckLinkConfiguration instance; 19 | 20 | public static StreamDeckLinkConfiguration Instance 21 | { 22 | get 23 | { 24 | if (instance is null) 25 | { 26 | instance = new StreamDeckLinkConfiguration(); 27 | } 28 | 29 | return instance; 30 | } 31 | } 32 | 33 | public event Action ConfigurationChanged; 34 | 35 | public StreamDeckLinkConfiguration() => Load(); 36 | 37 | private void Load() 38 | { 39 | ServerHost = EditorPrefs.GetString(GetPrefsFullName(nameof(ServerHost)), "127.0.0.1"); 40 | ServerPort = EditorPrefs.GetInt(GetPrefsFullName(nameof(ServerPort)), 18084); 41 | Enabled = EditorPrefs.GetBool(GetPrefsFullName(nameof(Enabled)), true); 42 | Verbose = EditorPrefs.GetBool(GetPrefsFullName(nameof(Verbose)), false); 43 | Debug = EditorPrefs.GetBool(GetPrefsFullName(nameof(Debug)), false); 44 | } 45 | 46 | public void Save() 47 | { 48 | EditorPrefs.SetString(GetPrefsFullName(nameof(ServerHost)), ServerHost); 49 | EditorPrefs.SetInt(GetPrefsFullName(nameof(ServerPort)), ServerPort); 50 | EditorPrefs.SetBool(GetPrefsFullName(nameof(Enabled)), Enabled); 51 | EditorPrefs.SetBool(GetPrefsFullName(nameof(Verbose)), Verbose); 52 | EditorPrefs.SetBool(GetPrefsFullName(nameof(Debug)), Debug); 53 | 54 | ConfigurationChanged?.Invoke(); 55 | } 56 | 57 | private string GetPrefsFullName(string preference) => $"StreamDeck_{preference}"; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /UnityStreamDeck/StreamDeckLinkEditorWindow.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | 4 | namespace UnityStreamDeck 5 | { 6 | public class StreamDeckLinkEditorWindow : EditorWindow 7 | { 8 | [MenuItem("Tools/Stream Deck")] 9 | public static void Init() 10 | { 11 | var editorWindow = GetWindow("Stream Deck"); 12 | editorWindow.maxSize = new Vector2(280, 180); 13 | editorWindow.minSize = editorWindow.maxSize; 14 | editorWindow.Show(); 15 | } 16 | 17 | private void OnGUI() 18 | { 19 | EditorGUILayout.BeginVertical(); 20 | 21 | var configuration = StreamDeckLinkConfiguration.Instance; 22 | configuration.Enabled = EditorGUILayout.BeginToggleGroup(new GUIContent("Enabled"), configuration.Enabled); 23 | configuration.ServerHost = EditorGUILayout.TextField(new GUIContent("Server Host"), configuration.ServerHost); 24 | configuration.ServerPort = EditorGUILayout.IntField(new GUIContent("Server Port"), configuration.ServerPort); 25 | configuration.Verbose = EditorGUILayout.ToggleLeft(new GUIContent("Verbose"), configuration.Verbose); 26 | 27 | EditorGUILayout.Space(); 28 | 29 | EditorGUILayout.Space(); 30 | 31 | EditorGUILayout.EndToggleGroup(); 32 | 33 | if (GUILayout.Button("Save")) 34 | { 35 | configuration.Save(); 36 | } 37 | 38 | if (GUILayout.Button("Report ISSUE")) 39 | { 40 | Application.OpenURL("https://github.com/nicollasricas/unity-streamdeck/issues/new"); 41 | } 42 | 43 | EditorGUILayout.Space(); 44 | 45 | configuration.Debug = EditorGUILayout.ToggleLeft(new GUIContent("Debug"), configuration.Debug); 46 | 47 | EditorGUILayout.EndVertical(); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /UnityStreamDeck/UnityStreamDeck.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | netstandard2.0 4 | 5 | 6 | Nicollas R. 7 | LICENSE 8 | https://github.com/nicollasricas/unity-streamdeck 9 | https://github.com/nicollasricas/unity-streamdeck 10 | 1.1.3 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | True 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /tools/UnityPacker.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nicollasricas/unity-deck/219ff19342b35081a77a18675d2a26120bc141a5/tools/UnityPacker.exe --------------------------------------------------------------------------------