├── .gitattributes ├── .github ├── CODE_OF_CONDUCT.md ├── PULL_REQUEST_TEMPLATE.md ├── funding.yml └── workflows │ ├── codeql-analysis.yml │ └── pre-compile-and-lint.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── package-lock.json ├── package.json ├── project ├── .gitignore ├── .vscode │ └── settings.json ├── Assets │ ├── MainScene.unity │ ├── MainScene.unity.meta │ ├── Objects.meta │ ├── Objects │ │ ├── Clock.meta │ │ ├── Clock │ │ │ ├── ClockIcon.png │ │ │ └── ClockIcon.png.meta │ │ ├── Crate.meta │ │ ├── Crate │ │ │ ├── CrateAnimationClicked.anim │ │ │ ├── CrateAnimationClicked.anim.meta │ │ │ ├── CrateAnimationIdle.anim │ │ │ ├── CrateAnimationIdle.anim.meta │ │ │ ├── CrateAnimatorController.controller │ │ │ ├── CrateAnimatorController.controller.meta │ │ │ ├── CrateIcon.tiff │ │ │ ├── CrateIcon.tiff.meta │ │ │ ├── CrateMaterial.mat │ │ │ ├── CrateMaterial.mat.meta │ │ │ ├── CrateMesh.mesh │ │ │ ├── CrateMesh.mesh.meta │ │ │ ├── CrateSoundBreak.mp3 │ │ │ ├── CrateSoundBreak.mp3.meta │ │ │ ├── CrateTexture.png │ │ │ └── CrateTexture.png.meta │ │ ├── Fonts.meta │ │ ├── Fonts │ │ │ ├── CrashAlike.ttf │ │ │ └── CrashAlike.ttf.meta │ │ ├── Skybox.meta │ │ └── Skybox │ │ │ ├── SkyboxMaterial.mat │ │ │ ├── SkyboxMaterial.mat.meta │ │ │ ├── SkyboxMaterial.png │ │ │ ├── SkyboxMaterial.png.meta │ │ │ ├── SkyboxMesh.mesh │ │ │ └── SkyboxMesh.mesh.meta │ ├── Plugins.meta │ ├── Plugins │ │ ├── WebGL.meta │ │ └── WebGL │ │ │ ├── ReactUnityWebGL.jslib │ │ │ └── ReactUnityWebGL.jslib.meta │ ├── Source.meta │ └── Source │ │ ├── BlinkingElementController.cs │ │ ├── BlinkingElementController.cs.meta │ │ ├── CrateController.cs │ │ ├── CrateController.cs.meta │ │ ├── GameController.cs │ │ ├── GameController.cs.meta │ │ ├── ScoreElementController.cs │ │ ├── ScoreElementController.cs.meta │ │ ├── TimeElementController.cs │ │ └── TimeElementController.cs.meta ├── Packages │ ├── manifest.json │ └── packages-lock.json ├── ProjectSettings │ ├── AudioManager.asset │ ├── ClusterInputManager.asset │ ├── DynamicsManager.asset │ ├── EditorBuildSettings.asset │ ├── EditorSettings.asset │ ├── GraphicsSettings.asset │ ├── InputManager.asset │ ├── MemorySettings.asset │ ├── NavMeshAreas.asset │ ├── PackageManagerSettings.asset │ ├── Physics2DSettings.asset │ ├── PresetManager.asset │ ├── ProjectSettings.asset │ ├── ProjectVersion.txt │ ├── QualitySettings.asset │ ├── SceneTemplateSettings.json │ ├── TagManager.asset │ ├── TimeManager.asset │ ├── UnityConnectSettings.asset │ ├── VFXManager.asset │ └── VersionControlSettings.asset ├── UserSettings │ ├── EditorUserSettings.asset │ └── Layouts │ │ └── default-2021.dwlt └── omnisharp.json ├── public ├── index.html └── unitybuild │ ├── crateclicker.data │ ├── crateclicker.framework.js │ ├── crateclicker.loader.js │ └── crateclicker.wasm ├── src ├── app.component.tsx ├── app.module.css ├── index.ts ├── react-app-env.d.ts └── styles.css └── tsconfig.json /.gitattributes: -------------------------------------------------------------------------------- 1 | # Excludes Public directory from statistics 2 | public/* linguist-vendored -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | - Using welcoming and inclusive language 12 | - Being respectful of differing viewpoints and experiences 13 | - Gracefully accepting constructive criticism 14 | - Focusing on what is best for the community 15 | - Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | - The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | - Trolling, insulting/derogatory comments, and personal or political attacks 21 | - Public or private harassment 22 | - Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | - Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at jeffreylanters@me.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: http://contributor-covenant.org 46 | [version]: http://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **Before submitting a pull request,** please make sure the following is done: 2 | 3 | - Fork [the repository](https://github.com/jeffreylanters/react-unity-webgl-tests) and create your branch from `master`. 4 | - Run `npm install` in the repository root. 5 | - Ensure the [test environment](https://github.com/jeffreylanters/react-unity-webgl-tests) passes using `npm start` on the library. 6 | - Format your code with [prettier](https://github.com/prettier/prettier). 7 | - Make sure your code lints (`ts lint`). 8 | - Typecheck all of your changes and make sure JSDocs are provided. 9 | - If you haven't already, complete the CLA. 10 | -------------------------------------------------------------------------------- /.github/funding.yml: -------------------------------------------------------------------------------- 1 | github: jeffreylanters 2 | custom: https://react-unity-webgl.dev/support 3 | -------------------------------------------------------------------------------- /.github/workflows/codeql-analysis.yml: -------------------------------------------------------------------------------- 1 | name: CodeQL Analysis 2 | 3 | on: 4 | push: 5 | paths: 6 | - source 7 | pull_request: 8 | paths: 9 | - source 10 | 11 | jobs: 12 | main: 13 | name: Main 14 | 15 | runs-on: ubuntu-latest 16 | 17 | strategy: 18 | fail-fast: false 19 | matrix: 20 | language: 21 | - javascript 22 | 23 | steps: 24 | - name: Checkout Repository 25 | uses: actions/checkout@v2 26 | 27 | - name: Initialize CodeQL 28 | uses: github/codeql-action/init@v1 29 | with: 30 | languages: ${{ matrix.language }} 31 | 32 | - name: Autobuild 33 | uses: github/codeql-action/autobuild@v1 34 | 35 | - name: Perform CodeQL Analysis 36 | uses: github/codeql-action/analyze@v1 37 | -------------------------------------------------------------------------------- /.github/workflows/pre-compile-and-lint.yml: -------------------------------------------------------------------------------- 1 | name: Pre-Compile and Lint 2 | 3 | on: 4 | - push 5 | - pull_request 6 | 7 | jobs: 8 | main: 9 | name: Main 10 | 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@v2 16 | 17 | - name: Setup Node 18 | uses: actions/setup-node@v1 19 | with: 20 | node-version: 12 21 | registry-url: https://registry.npmjs.org 22 | 23 | - name: Cache Node Module Dependencies 24 | uses: actions/cache@v2 25 | with: 26 | path: '**/node_modules' 27 | key: nodemodules-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }} 28 | 29 | - name: Install Dependencies 30 | run: npm install 31 | 32 | - name: Build Project 33 | run: npm run build 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # vendors 2 | /node_modules 3 | 4 | # production 5 | /build -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | For more information about contribution please head over to the [documentation](https://react-unity-webgl.dev/docs/contributing). 2 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2018 Jeffrey Lanters 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React Unity WebGL Template 2 | 3 | An out-of-the-box sandbox environment for the React Unity WebGL package. This environment contains a Create-React-App including both the source and build of a Unity WebGL project, allowing to test and debug all of its features. 4 | 5 | ## Contents 6 | 7 | This template contains a simple gamed named "Crate Clicker", where you have to start a game and click on crate as many times as you can to earn points. This game uses all of the implemented features of the React Unity WebGL package. 8 | 9 | - Before the Unity application is rendered, a loading screen is shown among with a progress bar to show the loading progress. This demonstrates the use of the [loading progression](https://react-unity-webgl.dev/docs/api/loading-progression) and [is loaded](https://react-unity-webgl.dev/docs/api/is-loaded) variables. 10 | - The game has to be started by a click on a button which is rendered in the React application. This event will trigger the game to start while passing a duration of the game in seconds. This demonstrates the use of [invoking a method in Unity with a parameter](https://react-unity-webgl.dev/docs/api/send-message). 11 | - When the user is game over, the game will stop and invoke an event listener in the React application with both the score, and the time left. This demonstrates the use of the [invoking an event listener in React with a parameter](https://react-unity-webgl.dev/docs/api/event-system). 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-unity-webgl-template", 3 | "version": "3.0.0", 4 | "description": "An out-of-the-box sandbox environment for the React Unity WebGL package. This environment contains a Create-React-App including both the source and build of a Unity WebGL project, allowing to test and debug all of its features.", 5 | "private": true, 6 | "dependencies": { 7 | "@testing-library/jest-dom": "^5.16.4", 8 | "@testing-library/react": "^13.3.0", 9 | "@testing-library/user-event": "^13.5.0", 10 | "@types/jest": "^27.5.2", 11 | "@types/node": "^16.11.47", 12 | "@types/react": "^18.0.15", 13 | "@types/react-dom": "^18.0.6", 14 | "react": "^18.2.0", 15 | "react-dom": "^18.2.0", 16 | "react-scripts": "5.0.1", 17 | "react-unity-webgl": "^9.0.4", 18 | "typescript": "^4.7.4" 19 | }, 20 | "scripts": { 21 | "start": "react-scripts start", 22 | "build": "react-scripts build", 23 | "test": "react-scripts test", 24 | "eject": "react-scripts eject" 25 | }, 26 | "eslintConfig": { 27 | "extends": [ 28 | "react-app", 29 | "react-app/jest" 30 | ] 31 | }, 32 | "browserslist": { 33 | "production": [ 34 | ">0.2%", 35 | "not dead", 36 | "not op_mini all" 37 | ], 38 | "development": [ 39 | "last 1 chrome version", 40 | "last 1 firefox version", 41 | "last 1 safari version" 42 | ] 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /project/.gitignore: -------------------------------------------------------------------------------- 1 | /[Ll]ibrary/ 2 | /[Tt]emp/ 3 | /[Oo]bj/ 4 | /[Bb]uild/ 5 | /[Bb]uilds/ 6 | /[Ll]ogs/ 7 | /[Uu]ser[Ss]ettings/ 8 | /[Mm]emoryCaptures/ 9 | /[Rr]ecordings/ 10 | /[Aa]ssets/Plugins/Editor/JetBrains* 11 | .vs/ 12 | .vscode/ 13 | .gradle/ 14 | ExportedObj/ 15 | .consulo/ 16 | *.csproj 17 | *.unityproj 18 | *.sln 19 | *.suo 20 | *.tmp 21 | *.user 22 | *.userprefs 23 | *.pidb 24 | *.booproj 25 | *.svd 26 | *.pdb 27 | *.mdb 28 | *.opendb 29 | *.VC.db 30 | *.pidb.meta 31 | *.pdb.meta 32 | *.mdb.meta 33 | sysinfo.txt 34 | *.apk 35 | *.aab 36 | *.unitypackage 37 | *.app 38 | crashlytics-build.properties 39 | /[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* 40 | /[Aa]ssets/[Ss]treamingAssets/aa.meta 41 | /[Aa]ssets/[Ss]treamingAssets/aa/* -------------------------------------------------------------------------------- /project/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.exclude": 3 | { 4 | "**/.DS_Store":true, 5 | "**/.git":true, 6 | "**/.gitignore":true, 7 | "**/.gitmodules":true, 8 | "**/*.booproj":true, 9 | "**/*.pidb":true, 10 | "**/*.suo":true, 11 | "**/*.user":true, 12 | "**/*.userprefs":true, 13 | "**/*.unityproj":true, 14 | "**/*.dll":true, 15 | "**/*.exe":true, 16 | "**/*.pdf":true, 17 | "**/*.mid":true, 18 | "**/*.midi":true, 19 | "**/*.wav":true, 20 | "**/*.gif":true, 21 | "**/*.ico":true, 22 | "**/*.jpg":true, 23 | "**/*.jpeg":true, 24 | "**/*.png":true, 25 | "**/*.psd":true, 26 | "**/*.tga":true, 27 | "**/*.tif":true, 28 | "**/*.tiff":true, 29 | "**/*.3ds":true, 30 | "**/*.3DS":true, 31 | "**/*.fbx":true, 32 | "**/*.FBX":true, 33 | "**/*.lxo":true, 34 | "**/*.LXO":true, 35 | "**/*.ma":true, 36 | "**/*.MA":true, 37 | "**/*.obj":true, 38 | "**/*.OBJ":true, 39 | "**/*.asset":true, 40 | "**/*.cubemap":true, 41 | "**/*.flare":true, 42 | "**/*.mat":true, 43 | "**/*.meta":true, 44 | "**/*.prefab":true, 45 | "**/*.unity":true, 46 | "build/":true, 47 | "Build/":true, 48 | "Library/":true, 49 | "library/":true, 50 | "obj/":true, 51 | "Obj/":true, 52 | "ProjectSettings/":true, 53 | "temp/":true, 54 | "Temp/":true 55 | } 56 | } -------------------------------------------------------------------------------- /project/Assets/MainScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 26854272bf1b541e8bdf25998a5b2aa8 3 | timeCreated: 1529848660 4 | licenseType: Pro 5 | DefaultImporter: 6 | externalObjects: {} 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /project/Assets/Objects.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d22f88d773d6f42208daa0ced7380cad 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Clock.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 184f397a8a3d64bdcb0b667a757dc368 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Clock/ClockIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeffreylanters/react-unity-webgl-template/d54b8bbe2cd05a704f7f6eb7a87fed938b9d71b1/project/Assets/Objects/Clock/ClockIcon.png -------------------------------------------------------------------------------- /project/Assets/Objects/Clock/ClockIcon.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3dba75d4721884cb6943c7d3aa29eb3c 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | platformSettings: 69 | - serializedVersion: 3 70 | buildTarget: DefaultTexturePlatform 71 | maxTextureSize: 128 72 | resizeAlgorithm: 0 73 | textureFormat: -1 74 | textureCompression: 1 75 | compressionQuality: 50 76 | crunchedCompression: 0 77 | allowsAlphaSplitting: 0 78 | overridden: 0 79 | androidETC2FallbackOverride: 0 80 | forceMaximumCompressionQuality_BC6H_BC7: 0 81 | - serializedVersion: 3 82 | buildTarget: Standalone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 1 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | forceMaximumCompressionQuality_BC6H_BC7: 0 93 | - serializedVersion: 3 94 | buildTarget: Server 95 | maxTextureSize: 2048 96 | resizeAlgorithm: 0 97 | textureFormat: -1 98 | textureCompression: 1 99 | compressionQuality: 50 100 | crunchedCompression: 0 101 | allowsAlphaSplitting: 0 102 | overridden: 0 103 | androidETC2FallbackOverride: 0 104 | forceMaximumCompressionQuality_BC6H_BC7: 0 105 | - serializedVersion: 3 106 | buildTarget: iPhone 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | forceMaximumCompressionQuality_BC6H_BC7: 0 117 | spriteSheet: 118 | serializedVersion: 2 119 | sprites: [] 120 | outline: [] 121 | physicsShape: [] 122 | bones: [] 123 | spriteID: 5e97eb03825dee720800000000000000 124 | internalID: 0 125 | vertices: [] 126 | indices: 127 | edges: [] 128 | weights: [] 129 | secondaryTextures: [] 130 | nameFileIdTable: {} 131 | spritePackingTag: 132 | pSDRemoveMatte: 0 133 | userData: 134 | assetBundleName: 135 | assetBundleVariant: 136 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f74b4ce04e3c4d57bb4bbd7057051cd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateAnimationClicked.anim: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!74 &7400000 4 | AnimationClip: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: CrateAnimationClicked 10 | serializedVersion: 7 11 | m_Legacy: 0 12 | m_Compressed: 0 13 | m_UseHighQualityCurve: 1 14 | m_RotationCurves: [] 15 | m_CompressedRotationCurves: [] 16 | m_EulerCurves: [] 17 | m_PositionCurves: [] 18 | m_ScaleCurves: 19 | - curve: 20 | serializedVersion: 2 21 | m_Curve: 22 | - serializedVersion: 3 23 | time: 0 24 | value: {x: 1, y: 1, z: 1} 25 | inSlope: {x: 0, y: 0, z: 0} 26 | outSlope: {x: 0, y: 0, z: 0} 27 | tangentMode: 0 28 | weightedMode: 0 29 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 30 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 31 | - serializedVersion: 3 32 | time: 0.16666667 33 | value: {x: 1.6223, y: 0.63292, z: 1} 34 | inSlope: {x: 0, y: 0, z: 0} 35 | outSlope: {x: 0, y: 0, z: 0} 36 | tangentMode: 0 37 | weightedMode: 0 38 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 39 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 40 | - serializedVersion: 3 41 | time: 0.25 42 | value: {x: 1.1260709, y: 1.490175, z: 1} 43 | inSlope: {x: -4.3224297, y: 0, z: 0} 44 | outSlope: {x: -4.3224297, y: 0, z: 0} 45 | tangentMode: 0 46 | weightedMode: 0 47 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 48 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 49 | - serializedVersion: 3 50 | time: 0.28333333 51 | value: {x: 1, y: 1, z: 1} 52 | inSlope: {x: 0, y: 0, z: 0} 53 | outSlope: {x: 0, y: 0, z: 0} 54 | tangentMode: 0 55 | weightedMode: 0 56 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 57 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 58 | m_PreInfinity: 2 59 | m_PostInfinity: 2 60 | m_RotationOrder: 4 61 | path: 62 | m_FloatCurves: [] 63 | m_PPtrCurves: [] 64 | m_SampleRate: 60 65 | m_WrapMode: 0 66 | m_Bounds: 67 | m_Center: {x: 0, y: 0, z: 0} 68 | m_Extent: {x: 0, y: 0, z: 0} 69 | m_ClipBindingConstant: 70 | genericBindings: 71 | - serializedVersion: 2 72 | path: 0 73 | attribute: 3 74 | script: {fileID: 0} 75 | typeID: 4 76 | customType: 0 77 | isPPtrCurve: 0 78 | isIntCurve: 0 79 | pptrCurveMapping: [] 80 | m_AnimationClipSettings: 81 | serializedVersion: 2 82 | m_AdditiveReferencePoseClip: {fileID: 0} 83 | m_AdditiveReferencePoseTime: 0 84 | m_StartTime: 0 85 | m_StopTime: 0.28333333 86 | m_OrientationOffsetY: 0 87 | m_Level: 0 88 | m_CycleOffset: 0 89 | m_HasAdditiveReferencePose: 0 90 | m_LoopTime: 1 91 | m_LoopBlend: 0 92 | m_LoopBlendOrientation: 0 93 | m_LoopBlendPositionY: 0 94 | m_LoopBlendPositionXZ: 0 95 | m_KeepOriginalOrientation: 0 96 | m_KeepOriginalPositionY: 1 97 | m_KeepOriginalPositionXZ: 0 98 | m_HeightFromFeet: 0 99 | m_Mirror: 0 100 | m_EditorCurves: 101 | - curve: 102 | serializedVersion: 2 103 | m_Curve: 104 | - serializedVersion: 3 105 | time: 0 106 | value: 1 107 | inSlope: 0 108 | outSlope: 0 109 | tangentMode: 136 110 | weightedMode: 0 111 | inWeight: 0.33333334 112 | outWeight: 0.33333334 113 | - serializedVersion: 3 114 | time: 0.16666667 115 | value: 1.6223 116 | inSlope: 0 117 | outSlope: 0 118 | tangentMode: 136 119 | weightedMode: 0 120 | inWeight: 0.33333334 121 | outWeight: 0.33333334 122 | - serializedVersion: 3 123 | time: 0.25 124 | value: 1.1260709 125 | inSlope: -4.3224297 126 | outSlope: -4.3224297 127 | tangentMode: 136 128 | weightedMode: 0 129 | inWeight: 0.33333334 130 | outWeight: 0.33333334 131 | - serializedVersion: 3 132 | time: 0.28333333 133 | value: 1 134 | inSlope: 0 135 | outSlope: 0 136 | tangentMode: 136 137 | weightedMode: 0 138 | inWeight: 0.33333334 139 | outWeight: 0.33333334 140 | m_PreInfinity: 2 141 | m_PostInfinity: 2 142 | m_RotationOrder: 4 143 | attribute: m_LocalScale.x 144 | path: 145 | classID: 4 146 | script: {fileID: 0} 147 | - curve: 148 | serializedVersion: 2 149 | m_Curve: 150 | - serializedVersion: 3 151 | time: 0 152 | value: 1 153 | inSlope: 0 154 | outSlope: 0 155 | tangentMode: 136 156 | weightedMode: 0 157 | inWeight: 0.33333334 158 | outWeight: 0.33333334 159 | - serializedVersion: 3 160 | time: 0.16666667 161 | value: 0.63292 162 | inSlope: 0 163 | outSlope: 0 164 | tangentMode: 136 165 | weightedMode: 0 166 | inWeight: 0.33333334 167 | outWeight: 0.33333334 168 | - serializedVersion: 3 169 | time: 0.25 170 | value: 1.490175 171 | inSlope: 0 172 | outSlope: 0 173 | tangentMode: 136 174 | weightedMode: 0 175 | inWeight: 0.33333334 176 | outWeight: 0.33333334 177 | - serializedVersion: 3 178 | time: 0.28333333 179 | value: 1 180 | inSlope: 0 181 | outSlope: 0 182 | tangentMode: 136 183 | weightedMode: 0 184 | inWeight: 0.33333334 185 | outWeight: 0.33333334 186 | m_PreInfinity: 2 187 | m_PostInfinity: 2 188 | m_RotationOrder: 4 189 | attribute: m_LocalScale.y 190 | path: 191 | classID: 4 192 | script: {fileID: 0} 193 | - curve: 194 | serializedVersion: 2 195 | m_Curve: 196 | - serializedVersion: 3 197 | time: 0 198 | value: 1 199 | inSlope: 0 200 | outSlope: 0 201 | tangentMode: 136 202 | weightedMode: 0 203 | inWeight: 0.33333334 204 | outWeight: 0.33333334 205 | - serializedVersion: 3 206 | time: 0.16666667 207 | value: 1 208 | inSlope: 0 209 | outSlope: 0 210 | tangentMode: 136 211 | weightedMode: 0 212 | inWeight: 0.33333334 213 | outWeight: 0.33333334 214 | - serializedVersion: 3 215 | time: 0.25 216 | value: 1 217 | inSlope: 0 218 | outSlope: 0 219 | tangentMode: 136 220 | weightedMode: 0 221 | inWeight: 0.33333334 222 | outWeight: 0.33333334 223 | - serializedVersion: 3 224 | time: 0.28333333 225 | value: 1 226 | inSlope: 0 227 | outSlope: 0 228 | tangentMode: 136 229 | weightedMode: 0 230 | inWeight: 0.33333334 231 | outWeight: 0.33333334 232 | m_PreInfinity: 2 233 | m_PostInfinity: 2 234 | m_RotationOrder: 4 235 | attribute: m_LocalScale.z 236 | path: 237 | classID: 4 238 | script: {fileID: 0} 239 | m_EulerEditorCurves: [] 240 | m_HasGenericRootTransform: 0 241 | m_HasMotionFloatCurves: 0 242 | m_Events: [] 243 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateAnimationClicked.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 964fc50a6dea64cdfab135b6811bc1b9 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 7400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateAnimationIdle.anim: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!74 &7400000 4 | AnimationClip: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: CrateAnimationIdle 10 | serializedVersion: 7 11 | m_Legacy: 0 12 | m_Compressed: 0 13 | m_UseHighQualityCurve: 1 14 | m_RotationCurves: [] 15 | m_CompressedRotationCurves: [] 16 | m_EulerCurves: 17 | - curve: 18 | serializedVersion: 2 19 | m_Curve: 20 | - serializedVersion: 3 21 | time: 0 22 | value: {x: 0, y: 0, z: 0} 23 | inSlope: {x: 0, y: 0, z: 0} 24 | outSlope: {x: 0, y: 0, z: 0} 25 | tangentMode: 0 26 | weightedMode: 0 27 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 28 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 29 | - serializedVersion: 3 30 | time: 1 31 | value: {x: -0.073, y: -0.917, z: -1.749} 32 | inSlope: {x: 0, y: 0, z: 0} 33 | outSlope: {x: 0, y: 0, z: 0} 34 | tangentMode: 0 35 | weightedMode: 0 36 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 37 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 38 | - serializedVersion: 3 39 | time: 3 40 | value: {x: -0.073, y: -0.917, z: -1.749} 41 | inSlope: {x: 0, y: 0, z: 0} 42 | outSlope: {x: 0, y: 0, z: 0} 43 | tangentMode: 0 44 | weightedMode: 0 45 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 46 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 47 | - serializedVersion: 3 48 | time: 4.016667 49 | value: {x: 0, y: 0, z: 0} 50 | inSlope: {x: 0, y: 0, z: 0} 51 | outSlope: {x: 0, y: 0, z: 0} 52 | tangentMode: 0 53 | weightedMode: 0 54 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 55 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 56 | m_PreInfinity: 2 57 | m_PostInfinity: 2 58 | m_RotationOrder: 4 59 | path: 60 | m_PositionCurves: 61 | - curve: 62 | serializedVersion: 2 63 | m_Curve: 64 | - serializedVersion: 3 65 | time: 0 66 | value: {x: 0, y: 0, z: 0} 67 | inSlope: {x: 0, y: 0, z: 0} 68 | outSlope: {x: 0, y: 0, z: 0} 69 | tangentMode: 0 70 | weightedMode: 0 71 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 72 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 73 | - serializedVersion: 3 74 | time: 4.016667 75 | value: {x: 0, y: 0, z: 0} 76 | inSlope: {x: 0, y: 0, z: 0} 77 | outSlope: {x: 0, y: 0, z: 0} 78 | tangentMode: 0 79 | weightedMode: 0 80 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 81 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 82 | m_PreInfinity: 2 83 | m_PostInfinity: 2 84 | m_RotationOrder: 4 85 | path: 86 | m_ScaleCurves: 87 | - curve: 88 | serializedVersion: 2 89 | m_Curve: 90 | - serializedVersion: 3 91 | time: 0 92 | value: {x: 1, y: 1, z: 1} 93 | inSlope: {x: 0, y: 0, z: 0} 94 | outSlope: {x: 0, y: 0, z: 0} 95 | tangentMode: 0 96 | weightedMode: 0 97 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 98 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 99 | - serializedVersion: 3 100 | time: 1 101 | value: {x: 1.0759, y: 0.93602, z: 1} 102 | inSlope: {x: 0, y: 0, z: 0} 103 | outSlope: {x: 0, y: 0, z: 0} 104 | tangentMode: 0 105 | weightedMode: 0 106 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 107 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 108 | - serializedVersion: 3 109 | time: 2 110 | value: {x: 1, y: 1, z: 1} 111 | inSlope: {x: 0, y: 0, z: 0} 112 | outSlope: {x: 0, y: 0, z: 0} 113 | tangentMode: 0 114 | weightedMode: 0 115 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 116 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 117 | - serializedVersion: 3 118 | time: 3 119 | value: {x: 1.0759, y: 0.93602, z: 1} 120 | inSlope: {x: 0, y: 0, z: 0} 121 | outSlope: {x: 0, y: 0, z: 0} 122 | tangentMode: 0 123 | weightedMode: 0 124 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 125 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 126 | - serializedVersion: 3 127 | time: 4.016667 128 | value: {x: 1, y: 1, z: 1} 129 | inSlope: {x: 0, y: 0, z: 0} 130 | outSlope: {x: 0, y: 0, z: 0} 131 | tangentMode: 0 132 | weightedMode: 0 133 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 134 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 135 | m_PreInfinity: 2 136 | m_PostInfinity: 2 137 | m_RotationOrder: 4 138 | path: 139 | m_FloatCurves: [] 140 | m_PPtrCurves: [] 141 | m_SampleRate: 60 142 | m_WrapMode: 0 143 | m_Bounds: 144 | m_Center: {x: 0, y: 0, z: 0} 145 | m_Extent: {x: 0, y: 0, z: 0} 146 | m_ClipBindingConstant: 147 | genericBindings: 148 | - serializedVersion: 2 149 | path: 0 150 | attribute: 4 151 | script: {fileID: 0} 152 | typeID: 4 153 | customType: 4 154 | isPPtrCurve: 0 155 | isIntCurve: 0 156 | - serializedVersion: 2 157 | path: 0 158 | attribute: 3 159 | script: {fileID: 0} 160 | typeID: 4 161 | customType: 0 162 | isPPtrCurve: 0 163 | isIntCurve: 0 164 | - serializedVersion: 2 165 | path: 0 166 | attribute: 1 167 | script: {fileID: 0} 168 | typeID: 4 169 | customType: 0 170 | isPPtrCurve: 0 171 | isIntCurve: 0 172 | pptrCurveMapping: [] 173 | m_AnimationClipSettings: 174 | serializedVersion: 2 175 | m_AdditiveReferencePoseClip: {fileID: 0} 176 | m_AdditiveReferencePoseTime: 0 177 | m_StartTime: 0 178 | m_StopTime: 4.016667 179 | m_OrientationOffsetY: 0 180 | m_Level: 0 181 | m_CycleOffset: 0 182 | m_HasAdditiveReferencePose: 0 183 | m_LoopTime: 1 184 | m_LoopBlend: 0 185 | m_LoopBlendOrientation: 0 186 | m_LoopBlendPositionY: 0 187 | m_LoopBlendPositionXZ: 0 188 | m_KeepOriginalOrientation: 0 189 | m_KeepOriginalPositionY: 1 190 | m_KeepOriginalPositionXZ: 0 191 | m_HeightFromFeet: 0 192 | m_Mirror: 0 193 | m_EditorCurves: 194 | - curve: 195 | serializedVersion: 2 196 | m_Curve: 197 | - serializedVersion: 3 198 | time: 0 199 | value: 0 200 | inSlope: 0 201 | outSlope: 0 202 | tangentMode: 136 203 | weightedMode: 0 204 | inWeight: 0.33333334 205 | outWeight: 0.33333334 206 | - serializedVersion: 3 207 | time: 4.016667 208 | value: 0 209 | inSlope: 0 210 | outSlope: 0 211 | tangentMode: 136 212 | weightedMode: 0 213 | inWeight: 0.33333334 214 | outWeight: 0.33333334 215 | m_PreInfinity: 2 216 | m_PostInfinity: 2 217 | m_RotationOrder: 4 218 | attribute: m_LocalPosition.x 219 | path: 220 | classID: 4 221 | script: {fileID: 0} 222 | - curve: 223 | serializedVersion: 2 224 | m_Curve: 225 | - serializedVersion: 3 226 | time: 0 227 | value: 0 228 | inSlope: 0 229 | outSlope: 0 230 | tangentMode: 136 231 | weightedMode: 0 232 | inWeight: 0.33333334 233 | outWeight: 0.33333334 234 | - serializedVersion: 3 235 | time: 4.016667 236 | value: 0 237 | inSlope: 0 238 | outSlope: 0 239 | tangentMode: 136 240 | weightedMode: 0 241 | inWeight: 0.33333334 242 | outWeight: 0.33333334 243 | m_PreInfinity: 2 244 | m_PostInfinity: 2 245 | m_RotationOrder: 4 246 | attribute: m_LocalPosition.y 247 | path: 248 | classID: 4 249 | script: {fileID: 0} 250 | - curve: 251 | serializedVersion: 2 252 | m_Curve: 253 | - serializedVersion: 3 254 | time: 0 255 | value: 0 256 | inSlope: 0 257 | outSlope: 0 258 | tangentMode: 136 259 | weightedMode: 0 260 | inWeight: 0.33333334 261 | outWeight: 0.33333334 262 | - serializedVersion: 3 263 | time: 4.016667 264 | value: 0 265 | inSlope: 0 266 | outSlope: 0 267 | tangentMode: 136 268 | weightedMode: 0 269 | inWeight: 0.33333334 270 | outWeight: 0.33333334 271 | m_PreInfinity: 2 272 | m_PostInfinity: 2 273 | m_RotationOrder: 4 274 | attribute: m_LocalPosition.z 275 | path: 276 | classID: 4 277 | script: {fileID: 0} 278 | - curve: 279 | serializedVersion: 2 280 | m_Curve: 281 | - serializedVersion: 3 282 | time: 0 283 | value: 0 284 | inSlope: 0 285 | outSlope: 0 286 | tangentMode: 136 287 | weightedMode: 0 288 | inWeight: 0.33333334 289 | outWeight: 0.33333334 290 | - serializedVersion: 3 291 | time: 1 292 | value: -0.073 293 | inSlope: 0 294 | outSlope: 0 295 | tangentMode: 136 296 | weightedMode: 0 297 | inWeight: 0.33333334 298 | outWeight: 0.33333334 299 | - serializedVersion: 3 300 | time: 3 301 | value: -0.073 302 | inSlope: 0 303 | outSlope: 0 304 | tangentMode: 136 305 | weightedMode: 0 306 | inWeight: 0.33333334 307 | outWeight: 0.33333334 308 | - serializedVersion: 3 309 | time: 4.016667 310 | value: 0 311 | inSlope: 0 312 | outSlope: 0 313 | tangentMode: 136 314 | weightedMode: 0 315 | inWeight: 0.33333334 316 | outWeight: 0.33333334 317 | m_PreInfinity: 2 318 | m_PostInfinity: 2 319 | m_RotationOrder: 4 320 | attribute: localEulerAnglesRaw.x 321 | path: 322 | classID: 4 323 | script: {fileID: 0} 324 | - curve: 325 | serializedVersion: 2 326 | m_Curve: 327 | - serializedVersion: 3 328 | time: 0 329 | value: 0 330 | inSlope: 0 331 | outSlope: 0 332 | tangentMode: 136 333 | weightedMode: 0 334 | inWeight: 0.33333334 335 | outWeight: 0.33333334 336 | - serializedVersion: 3 337 | time: 1 338 | value: -0.917 339 | inSlope: 0 340 | outSlope: 0 341 | tangentMode: 136 342 | weightedMode: 0 343 | inWeight: 0.33333334 344 | outWeight: 0.33333334 345 | - serializedVersion: 3 346 | time: 3 347 | value: -0.917 348 | inSlope: 0 349 | outSlope: 0 350 | tangentMode: 136 351 | weightedMode: 0 352 | inWeight: 0.33333334 353 | outWeight: 0.33333334 354 | - serializedVersion: 3 355 | time: 4.016667 356 | value: 0 357 | inSlope: 0 358 | outSlope: 0 359 | tangentMode: 136 360 | weightedMode: 0 361 | inWeight: 0.33333334 362 | outWeight: 0.33333334 363 | m_PreInfinity: 2 364 | m_PostInfinity: 2 365 | m_RotationOrder: 4 366 | attribute: localEulerAnglesRaw.y 367 | path: 368 | classID: 4 369 | script: {fileID: 0} 370 | - curve: 371 | serializedVersion: 2 372 | m_Curve: 373 | - serializedVersion: 3 374 | time: 0 375 | value: 0 376 | inSlope: 0 377 | outSlope: 0 378 | tangentMode: 136 379 | weightedMode: 0 380 | inWeight: 0.33333334 381 | outWeight: 0.33333334 382 | - serializedVersion: 3 383 | time: 1 384 | value: -1.749 385 | inSlope: 0 386 | outSlope: 0 387 | tangentMode: 136 388 | weightedMode: 0 389 | inWeight: 0.33333334 390 | outWeight: 0.33333334 391 | - serializedVersion: 3 392 | time: 3 393 | value: -1.749 394 | inSlope: 0 395 | outSlope: 0 396 | tangentMode: 136 397 | weightedMode: 0 398 | inWeight: 0.33333334 399 | outWeight: 0.33333334 400 | - serializedVersion: 3 401 | time: 4.016667 402 | value: 0 403 | inSlope: 0 404 | outSlope: 0 405 | tangentMode: 136 406 | weightedMode: 0 407 | inWeight: 0.33333334 408 | outWeight: 0.33333334 409 | m_PreInfinity: 2 410 | m_PostInfinity: 2 411 | m_RotationOrder: 4 412 | attribute: localEulerAnglesRaw.z 413 | path: 414 | classID: 4 415 | script: {fileID: 0} 416 | - curve: 417 | serializedVersion: 2 418 | m_Curve: 419 | - serializedVersion: 3 420 | time: 0 421 | value: 1 422 | inSlope: 0 423 | outSlope: 0 424 | tangentMode: 136 425 | weightedMode: 0 426 | inWeight: 0.33333334 427 | outWeight: 0.33333334 428 | - serializedVersion: 3 429 | time: 1 430 | value: 1.0759 431 | inSlope: 0 432 | outSlope: 0 433 | tangentMode: 136 434 | weightedMode: 0 435 | inWeight: 0.33333334 436 | outWeight: 0.33333334 437 | - serializedVersion: 3 438 | time: 2 439 | value: 1 440 | inSlope: 0 441 | outSlope: 0 442 | tangentMode: 136 443 | weightedMode: 0 444 | inWeight: 0.33333334 445 | outWeight: 0.33333334 446 | - serializedVersion: 3 447 | time: 3 448 | value: 1.0759 449 | inSlope: 0 450 | outSlope: 0 451 | tangentMode: 136 452 | weightedMode: 0 453 | inWeight: 0.33333334 454 | outWeight: 0.33333334 455 | - serializedVersion: 3 456 | time: 4.016667 457 | value: 1 458 | inSlope: 0 459 | outSlope: 0 460 | tangentMode: 136 461 | weightedMode: 0 462 | inWeight: 0.33333334 463 | outWeight: 0.33333334 464 | m_PreInfinity: 2 465 | m_PostInfinity: 2 466 | m_RotationOrder: 4 467 | attribute: m_LocalScale.x 468 | path: 469 | classID: 4 470 | script: {fileID: 0} 471 | - curve: 472 | serializedVersion: 2 473 | m_Curve: 474 | - serializedVersion: 3 475 | time: 0 476 | value: 1 477 | inSlope: 0 478 | outSlope: 0 479 | tangentMode: 136 480 | weightedMode: 0 481 | inWeight: 0.33333334 482 | outWeight: 0.33333334 483 | - serializedVersion: 3 484 | time: 1 485 | value: 0.93602 486 | inSlope: 0 487 | outSlope: 0 488 | tangentMode: 136 489 | weightedMode: 0 490 | inWeight: 0.33333334 491 | outWeight: 0.33333334 492 | - serializedVersion: 3 493 | time: 2 494 | value: 1 495 | inSlope: 0 496 | outSlope: 0 497 | tangentMode: 136 498 | weightedMode: 0 499 | inWeight: 0.33333334 500 | outWeight: 0.33333334 501 | - serializedVersion: 3 502 | time: 3 503 | value: 0.93602 504 | inSlope: 0 505 | outSlope: 0 506 | tangentMode: 136 507 | weightedMode: 0 508 | inWeight: 0.33333334 509 | outWeight: 0.33333334 510 | - serializedVersion: 3 511 | time: 4.016667 512 | value: 1 513 | inSlope: 0 514 | outSlope: 0 515 | tangentMode: 136 516 | weightedMode: 0 517 | inWeight: 0.33333334 518 | outWeight: 0.33333334 519 | m_PreInfinity: 2 520 | m_PostInfinity: 2 521 | m_RotationOrder: 4 522 | attribute: m_LocalScale.y 523 | path: 524 | classID: 4 525 | script: {fileID: 0} 526 | - curve: 527 | serializedVersion: 2 528 | m_Curve: 529 | - serializedVersion: 3 530 | time: 0 531 | value: 1 532 | inSlope: 0 533 | outSlope: 0 534 | tangentMode: 136 535 | weightedMode: 0 536 | inWeight: 0.33333334 537 | outWeight: 0.33333334 538 | - serializedVersion: 3 539 | time: 1 540 | value: 1 541 | inSlope: 0 542 | outSlope: 0 543 | tangentMode: 136 544 | weightedMode: 0 545 | inWeight: 0.33333334 546 | outWeight: 0.33333334 547 | - serializedVersion: 3 548 | time: 2 549 | value: 1 550 | inSlope: 0 551 | outSlope: 0 552 | tangentMode: 136 553 | weightedMode: 0 554 | inWeight: 0.33333334 555 | outWeight: 0.33333334 556 | - serializedVersion: 3 557 | time: 3 558 | value: 1 559 | inSlope: 0 560 | outSlope: 0 561 | tangentMode: 136 562 | weightedMode: 0 563 | inWeight: 0.33333334 564 | outWeight: 0.33333334 565 | - serializedVersion: 3 566 | time: 4.016667 567 | value: 1 568 | inSlope: 0 569 | outSlope: 0 570 | tangentMode: 136 571 | weightedMode: 0 572 | inWeight: 0.33333334 573 | outWeight: 0.33333334 574 | m_PreInfinity: 2 575 | m_PostInfinity: 2 576 | m_RotationOrder: 4 577 | attribute: m_LocalScale.z 578 | path: 579 | classID: 4 580 | script: {fileID: 0} 581 | m_EulerEditorCurves: 582 | - curve: 583 | serializedVersion: 2 584 | m_Curve: [] 585 | m_PreInfinity: 2 586 | m_PostInfinity: 2 587 | m_RotationOrder: 4 588 | attribute: m_LocalEulerAngles.x 589 | path: 590 | classID: 4 591 | script: {fileID: 0} 592 | - curve: 593 | serializedVersion: 2 594 | m_Curve: [] 595 | m_PreInfinity: 2 596 | m_PostInfinity: 2 597 | m_RotationOrder: 4 598 | attribute: m_LocalEulerAngles.y 599 | path: 600 | classID: 4 601 | script: {fileID: 0} 602 | - curve: 603 | serializedVersion: 2 604 | m_Curve: [] 605 | m_PreInfinity: 2 606 | m_PostInfinity: 2 607 | m_RotationOrder: 4 608 | attribute: m_LocalEulerAngles.z 609 | path: 610 | classID: 4 611 | script: {fileID: 0} 612 | m_HasGenericRootTransform: 1 613 | m_HasMotionFloatCurves: 0 614 | m_Events: [] 615 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateAnimationIdle.anim.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bdba1dafb24e149b29e1eb74d24bd687 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 7400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateAnimatorController.controller: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1107 &-4742861678379122765 4 | AnimatorStateMachine: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 1 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Base Layer 11 | m_ChildStates: 12 | - serializedVersion: 1 13 | m_State: {fileID: 510859487896969459} 14 | m_Position: {x: -60, y: 180, z: 0} 15 | - serializedVersion: 1 16 | m_State: {fileID: 3533351863337482308} 17 | m_Position: {x: 170, y: 180, z: 0} 18 | m_ChildStateMachines: [] 19 | m_AnyStateTransitions: [] 20 | m_EntryTransitions: [] 21 | m_StateMachineTransitions: {} 22 | m_StateMachineBehaviours: [] 23 | m_AnyStatePosition: {x: 70, y: 70, z: 0} 24 | m_EntryPosition: {x: 70, y: 120, z: 0} 25 | m_ExitPosition: {x: 800, y: 120, z: 0} 26 | m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} 27 | m_DefaultState: {fileID: 510859487896969459} 28 | --- !u!1101 &-2148763911621350145 29 | AnimatorStateTransition: 30 | m_ObjectHideFlags: 1 31 | m_CorrespondingSourceObject: {fileID: 0} 32 | m_PrefabInstance: {fileID: 0} 33 | m_PrefabAsset: {fileID: 0} 34 | m_Name: 35 | m_Conditions: [] 36 | m_DstStateMachine: {fileID: 0} 37 | m_DstState: {fileID: 510859487896969459} 38 | m_Solo: 0 39 | m_Mute: 0 40 | m_IsExit: 0 41 | serializedVersion: 3 42 | m_TransitionDuration: 0.075249374 43 | m_TransitionOffset: 0.04154867 44 | m_ExitTime: 0.70666033 45 | m_HasExitTime: 1 46 | m_HasFixedDuration: 1 47 | m_InterruptionSource: 0 48 | m_OrderedInterruption: 1 49 | m_CanTransitionToSelf: 1 50 | --- !u!91 &9100000 51 | AnimatorController: 52 | m_ObjectHideFlags: 0 53 | m_CorrespondingSourceObject: {fileID: 0} 54 | m_PrefabInstance: {fileID: 0} 55 | m_PrefabAsset: {fileID: 0} 56 | m_Name: CrateAnimatorController 57 | serializedVersion: 5 58 | m_AnimatorParameters: 59 | - m_Name: IsClicked 60 | m_Type: 4 61 | m_DefaultFloat: 0 62 | m_DefaultInt: 0 63 | m_DefaultBool: 0 64 | m_Controller: {fileID: 9100000} 65 | - m_Name: Clicked 66 | m_Type: 9 67 | m_DefaultFloat: 0 68 | m_DefaultInt: 0 69 | m_DefaultBool: 0 70 | m_Controller: {fileID: 9100000} 71 | m_AnimatorLayers: 72 | - serializedVersion: 5 73 | m_Name: Base Layer 74 | m_StateMachine: {fileID: -4742861678379122765} 75 | m_Mask: {fileID: 0} 76 | m_Motions: [] 77 | m_Behaviours: [] 78 | m_BlendingMode: 0 79 | m_SyncedLayerIndex: -1 80 | m_DefaultWeight: 0 81 | m_IKPass: 0 82 | m_SyncedLayerAffectsTiming: 0 83 | m_Controller: {fileID: 9100000} 84 | --- !u!1102 &510859487896969459 85 | AnimatorState: 86 | serializedVersion: 6 87 | m_ObjectHideFlags: 1 88 | m_CorrespondingSourceObject: {fileID: 0} 89 | m_PrefabInstance: {fileID: 0} 90 | m_PrefabAsset: {fileID: 0} 91 | m_Name: Idle 92 | m_Speed: 1 93 | m_CycleOffset: 0 94 | m_Transitions: 95 | - {fileID: 2198253062945645413} 96 | m_StateMachineBehaviours: [] 97 | m_Position: {x: 50, y: 50, z: 0} 98 | m_IKOnFeet: 0 99 | m_WriteDefaultValues: 1 100 | m_Mirror: 0 101 | m_SpeedParameterActive: 0 102 | m_MirrorParameterActive: 0 103 | m_CycleOffsetParameterActive: 0 104 | m_TimeParameterActive: 0 105 | m_Motion: {fileID: 7400000, guid: bdba1dafb24e149b29e1eb74d24bd687, type: 2} 106 | m_Tag: 107 | m_SpeedParameter: 108 | m_MirrorParameter: 109 | m_CycleOffsetParameter: 110 | m_TimeParameter: 111 | --- !u!1101 &2198253062945645413 112 | AnimatorStateTransition: 113 | m_ObjectHideFlags: 1 114 | m_CorrespondingSourceObject: {fileID: 0} 115 | m_PrefabInstance: {fileID: 0} 116 | m_PrefabAsset: {fileID: 0} 117 | m_Name: 118 | m_Conditions: 119 | - m_ConditionMode: 1 120 | m_ConditionEvent: Clicked 121 | m_EventTreshold: 0 122 | m_DstStateMachine: {fileID: 0} 123 | m_DstState: {fileID: 3533351863337482308} 124 | m_Solo: 0 125 | m_Mute: 0 126 | m_IsExit: 0 127 | serializedVersion: 3 128 | m_TransitionDuration: 0.054653406 129 | m_TransitionOffset: 0 130 | m_ExitTime: 0.93775934 131 | m_HasExitTime: 0 132 | m_HasFixedDuration: 1 133 | m_InterruptionSource: 0 134 | m_OrderedInterruption: 1 135 | m_CanTransitionToSelf: 1 136 | --- !u!1102 &3533351863337482308 137 | AnimatorState: 138 | serializedVersion: 6 139 | m_ObjectHideFlags: 1 140 | m_CorrespondingSourceObject: {fileID: 0} 141 | m_PrefabInstance: {fileID: 0} 142 | m_PrefabAsset: {fileID: 0} 143 | m_Name: Clicked 144 | m_Speed: 1 145 | m_CycleOffset: 0 146 | m_Transitions: 147 | - {fileID: -2148763911621350145} 148 | m_StateMachineBehaviours: [] 149 | m_Position: {x: 50, y: 50, z: 0} 150 | m_IKOnFeet: 0 151 | m_WriteDefaultValues: 1 152 | m_Mirror: 0 153 | m_SpeedParameterActive: 0 154 | m_MirrorParameterActive: 0 155 | m_CycleOffsetParameterActive: 0 156 | m_TimeParameterActive: 0 157 | m_Motion: {fileID: 7400000, guid: 964fc50a6dea64cdfab135b6811bc1b9, type: 2} 158 | m_Tag: 159 | m_SpeedParameter: 160 | m_MirrorParameter: 161 | m_CycleOffsetParameter: 162 | m_TimeParameter: 163 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateAnimatorController.controller.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5fc7bbf40ceb34c08b7fe4ea3a4ef4ff 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 9100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateIcon.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeffreylanters/react-unity-webgl-template/d54b8bbe2cd05a704f7f6eb7a87fed938b9d71b1/project/Assets/Objects/Crate/CrateIcon.tiff -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateIcon.tiff.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f5fd1ccb24954d46910c618ac326c2e 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 1 41 | wrapV: 1 42 | wrapW: 0 43 | nPOTScale: 0 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 1 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 1 56 | spriteTessellationDetail: -1 57 | textureType: 8 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | platformSettings: 69 | - serializedVersion: 3 70 | buildTarget: DefaultTexturePlatform 71 | maxTextureSize: 128 72 | resizeAlgorithm: 0 73 | textureFormat: -1 74 | textureCompression: 1 75 | compressionQuality: 50 76 | crunchedCompression: 0 77 | allowsAlphaSplitting: 0 78 | overridden: 0 79 | androidETC2FallbackOverride: 0 80 | forceMaximumCompressionQuality_BC6H_BC7: 0 81 | - serializedVersion: 3 82 | buildTarget: Standalone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 1 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | forceMaximumCompressionQuality_BC6H_BC7: 0 93 | - serializedVersion: 3 94 | buildTarget: Server 95 | maxTextureSize: 2048 96 | resizeAlgorithm: 0 97 | textureFormat: -1 98 | textureCompression: 1 99 | compressionQuality: 50 100 | crunchedCompression: 0 101 | allowsAlphaSplitting: 0 102 | overridden: 0 103 | androidETC2FallbackOverride: 0 104 | forceMaximumCompressionQuality_BC6H_BC7: 0 105 | - serializedVersion: 3 106 | buildTarget: iPhone 107 | maxTextureSize: 2048 108 | resizeAlgorithm: 0 109 | textureFormat: -1 110 | textureCompression: 1 111 | compressionQuality: 50 112 | crunchedCompression: 0 113 | allowsAlphaSplitting: 0 114 | overridden: 0 115 | androidETC2FallbackOverride: 0 116 | forceMaximumCompressionQuality_BC6H_BC7: 0 117 | spriteSheet: 118 | serializedVersion: 2 119 | sprites: [] 120 | outline: [] 121 | physicsShape: [] 122 | bones: [] 123 | spriteID: 5e97eb03825dee720800000000000000 124 | internalID: 0 125 | vertices: [] 126 | indices: 127 | edges: [] 128 | weights: [] 129 | secondaryTextures: [] 130 | nameFileIdTable: {} 131 | spritePackingTag: 132 | pSDRemoveMatte: 0 133 | userData: 134 | assetBundleName: 135 | assetBundleVariant: 136 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateMaterial.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: CrateMaterial 11 | m_Shader: {fileID: 10703, guid: 0000000000000000f000000000000000, type: 0} 12 | m_Parent: {fileID: 0} 13 | m_ModifiedSerializedProperties: 0 14 | m_ValidKeywords: [] 15 | m_InvalidKeywords: [] 16 | m_LightmapFlags: 4 17 | m_EnableInstancingVariants: 0 18 | m_DoubleSidedGI: 0 19 | m_CustomRenderQueue: -1 20 | stringTagMap: {} 21 | disabledShaderPasses: [] 22 | m_LockedProperties: 23 | m_SavedProperties: 24 | serializedVersion: 3 25 | m_TexEnvs: 26 | - _BumpMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailAlbedoMap: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailMask: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _DetailNormalMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _EmissionMap: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MainTex: 47 | m_Texture: {fileID: 2800000, guid: 929a96fb13f4a4265a82061f01e8802f, type: 3} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _MetallicGlossMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _OcclusionMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _ParallaxMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | m_Ints: [] 63 | m_Floats: 64 | - _BumpScale: 1 65 | - _Cutoff: 0.5 66 | - _DetailNormalMapScale: 1 67 | - _DstBlend: 0 68 | - _GlossMapScale: 1 69 | - _Glossiness: 0 70 | - _GlossyReflections: 1 71 | - _Metallic: 0 72 | - _Mode: 0 73 | - _OcclusionStrength: 1 74 | - _Parallax: 0.02 75 | - _SmoothnessTextureChannel: 0 76 | - _SpecularHighlights: 1 77 | - _SrcBlend: 1 78 | - _UVSec: 0 79 | - _ZWrite: 1 80 | m_Colors: 81 | - _Color: {r: 1, g: 1, b: 1, a: 1} 82 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 83 | m_BuildTextureStacks: [] 84 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateMaterial.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c85ec64dd71cf4da6934f9ed9ddad1cd 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateMesh.mesh: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!43 &4300000 4 | Mesh: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: CrateMesh 10 | serializedVersion: 11 11 | m_SubMeshes: 12 | - serializedVersion: 2 13 | firstByte: 0 14 | indexCount: 372 15 | topology: 0 16 | baseVertex: 0 17 | firstVertex: 0 18 | vertexCount: 198 19 | localAABB: 20 | m_Center: {x: 0, y: 2.4646785, z: -0.050060987} 21 | m_Extent: {x: 2.49969, y: 2.4996903, z: 2.499691} 22 | m_Shapes: 23 | vertices: [] 24 | shapes: [] 25 | channels: [] 26 | fullWeights: [] 27 | m_BindPose: [] 28 | m_BoneNameHashes: 29 | m_RootBoneNameHash: 0 30 | m_BonesAABB: [] 31 | m_VariableBoneCountWeights: 32 | m_Data: 33 | m_MeshCompression: 0 34 | m_IsReadable: 0 35 | m_KeepVertices: 1 36 | m_KeepIndices: 1 37 | m_IndexFormat: 0 38 | m_IndexBuffer: 0000010002000300040005000600070008000800070009000a000b000c000c000b000d000e000f00100010000f00110012001300140014001300150016001700180018001700190017001a00190019001a001b001c001d001e001e001d001f002000210022002200210023002400250026002600250027002500280027002700280029002a002b002c002c002b002d002e002f00300030002f0031003200330034003400330035003600370038003800370039003a003b003c003c003b003d003e003f00400040003f0041004200430044004400430045004600470048004800470049004a004b004c004c004b004d004e004f00500050004f0051005200530054005400530055005600570058005800570059005a005b005c005c005b005d005e005f00600060005f0061006200630064006400630065006600670068006800670069006a006b006c006c006b006d006e006f00700070006f0071007200730074007400730075007600770078007800770079007a007b007c007c007b007d007e007f00800080007f0081008200830084008400830085008600870088008800870089008a008b008c008c008b008d008e008f00900090008f00910092009300940094009300950096009700980099009700960097009a0098009b009900960098009a009c009d0099009b009a009d009c009c009d009b009e009f00a000a1009f009e009f00a200a000a300a1009e00a000a200a400a500a100a300a200a500a400a400a500a300a600a700a800a900a600a800a800a700aa00ab00a600a900a700ac00aa00ad00ab00a900ac00ab00ad00aa00ac00ad00ae00af00b000b100ae00b000b000af00b200b300ae00b100af00b400b200b500b300b100b400b300b500b200b400b500b600b700b800b900b600b800b800b700ba00bb00b600b900b700bc00ba00bd00bb00b900ba00bc00bd00bc00bb00bd00be00bf00c000c100bf00be00bf00c200c000c300c100be00c000c200c400c500c100c300c200c500c400c400c500c300 39 | m_VertexData: 40 | serializedVersion: 3 41 | m_VertexCount: 198 42 | m_Channels: 43 | - stream: 0 44 | offset: 0 45 | format: 0 46 | dimension: 3 47 | - stream: 0 48 | offset: 12 49 | format: 0 50 | dimension: 3 51 | - stream: 0 52 | offset: 24 53 | format: 0 54 | dimension: 4 55 | - stream: 0 56 | offset: 0 57 | format: 0 58 | dimension: 0 59 | - stream: 0 60 | offset: 40 61 | format: 0 62 | dimension: 2 63 | - stream: 0 64 | offset: 0 65 | format: 0 66 | dimension: 0 67 | - stream: 0 68 | offset: 0 69 | format: 0 70 | dimension: 0 71 | - stream: 0 72 | offset: 0 73 | format: 0 74 | dimension: 0 75 | - stream: 0 76 | offset: 0 77 | format: 0 78 | dimension: 0 79 | - stream: 0 80 | offset: 0 81 | format: 0 82 | dimension: 0 83 | - stream: 0 84 | offset: 0 85 | format: 0 86 | dimension: 0 87 | - stream: 0 88 | offset: 0 89 | format: 0 90 | dimension: 0 91 | - stream: 0 92 | offset: 0 93 | format: 0 94 | dimension: 0 95 | - stream: 0 96 | offset: 0 97 | format: 0 98 | dimension: 0 99 | m_DataSize: 9504 100 | _typelessdata: d2e38bbfab0893402ec5cd3f1594253e2f34793f50e3253e4c76d93c4ba5233e539e7cbf000080bf07612e3e7cd18e3ef65dd53fab0893402ec5cd3f000000000000803f000000000000000000000000000080bf000080bf07612e3e37fa543ff65dd53fab089340d8d392bfb234253e1d3c793fc183253ead78d83cb049233e3ea27cbf000080bf30f13b3f37fa543f213c963faf0893404b93dabffb3323be7d3f793fe82c27bee78f953c9a5526be8e8e7cbf000080bf5fb4533f800f363ff65dd5bfaf0893404b93dabf000000000000803f00000000ceaa06bc00000000cafd7fbf000080bf5fb4533fb7d3363ef65dd5bfab089340a262883fd2861ebe60a2793f9b6222be6626893c0ab121be89c07cbf000080bf09fe8f3e5073323ef65dd53fc2f992408fc2cd3ff38034bfe94c2239948835bf000000000000803f9be064390000803fd367c73d9928523ff65dd5bfc3f492408fc2cd3fd185343f45092239bc8335bf000000000000803fb08864390000803fa297b13d9a5d373ef65dd53f16dc9e4037c5cd3f6fa9f1bd82637c3ff91af3bd48c4313f2e642b3e7e29333f0000803f1b67f33d9928523ff65dd5bf16dc9e4037c5cd3f9d55f23d835e7c3f0cbbf3bdc2c531bfd1d92b3efd20333f0000803f1b67f33d9a5d373ef65dd5bf16dc9e4037c5cd3f9d55f23d835e7c3f0cbbf3bdf1ca67bc9800f2bd3f2e7ebf0000803fcba05a3b3673083ef65dd5bfc3f492408fc2cd3fd185343f45092239bc8335bf048235bf67680abc3b8434bf0000803f91485b3b09feb73df65dd5bf1cdc9e404b93dabf35a7f13db9637c3fc90ef33d254da93cadb8ef3d672f7ebf0000803f1f477f3f5c91083ef65dd5bfc4f99240618edabf798a343fb51896391a7f353f6cf0343fc7f6a0bd74fa33bf0000803f95477f3f4fb2d53df65dd5bfc4f99240618edabf798a343fb51896391a7f353f1d68353f4059ff3c6f7434bf000080bf3fc8323b1d3d6a3ff65dd53f03fb9240618edabf978834bfe4289639fa80353f277f353ffff1153c8a86343f000080bfd1227f3f43756b3ff65dd5bf1cdc9e404b93dabf35a7f13db9637c3fc90ef33df3357e3f8c44efbd653489bc000080bfc138383b7423643ff65dd53f1cdc9e404b93dabf51cef1bd78627c3f233bf33d97357e3f3934f03d187a5e3c000080bf1c297f3f986c643ff65dd53f1cdc9e404b93dabf51cef1bd78627c3f233bf33d19a1313fa47c2b3eea4a33bf000080bf4e5faf3d5da3353ef65dd53f03fb9240618edabf978834bfe4289639fa80353f2bce02380000803f2087c3b9000080bf8f50733d5da3353ef65dd53f16dc9e4037c5cd3f6fa9f1bd82637c3ff91af3bd53c6313f30642b3e7827333f000080bf4e5faf3d2997523ff65dd53fc2f992408fc2cd3ff38034bfe94c2239948835bf000000000000803f9be06439000080bf54c9803d2997523fd2e38bbf255c9a4037c5cd3f7ab97e3eb69a6f3f71337f3e43f467be0edf9c3e1db06cbf000080bf0f7c1c3e0535843ef65dd53f275c9a40d8d392bf45205d3e29bf733f3f8a5d3e5ac0223d35ee593ea7ed79bf000080bf4f783d3f9a5b553ff65dd5bf255c9a4037c5cd3f000000000000803f000000000cbabcbd0000000025e97ebf000080bf0f7c1c3e97912a3ef65dd5bf275c9a40a262883f2dd065beb36d723f43686bbe9a21d93da3d657bebcc578bf000080bf1afb823eb891223ef65dd53f295c9a404b93dabf000000000000803f000000009013e4bd0000000055687ebf000080bff4e0563f9a5b553f213c963f295c9a404b93dabfc53e90bec8416a3fb0c193befdac25be6afcaebe15fe6cbf000080bff4e0563f5d53403fd2e38bbf255c9a4037c5cd3f7ab97e3eb69a6f3f71337f3e7e34353fe15311b85dd534bf000080bf90a20e3db9366c3fd2e38bbfab0893402ec5cd3f1594253e2f34793f50e3253e0b33353f2e9c72b7cfd634bf000080bf75e7093d5d877a3ff65dd53f275c9a40d8d392bf45205d3e29bf733f3f8a5d3e3e2c353faf28ea37a1dd34bf000080bf59c0303f29256c3ff65dd53fab089340d8d392bfb234253e1d3c793fc183253e1a2d353fe0a48337c2dc34bf000080bf46d0303f5f9a7a3f213c963f295c9a404b93dabfc53e90bec8416a3fb0c193be843337bf9aa03db891cf323f000080bf90a20e3db9366c3f213c963faf0893404b93dabffb3323be7d3f793fe82c27be9c3137bf704e75b787d1323f000080bf75e7093d5d877a3ff65dd5bf275c9a40a262883f2dd065beb36d723f43686bbed12a37bf0625f7377bd8323f000080bf59c0303f29256c3ff65dd5bfab089340a262883fd2861ebe60a2793f9b6222beea2b37bf82f36b375bd7323f000080bf46d0303f5f9a7a3f32e6d63ff6df9c40747b853f0b88a23e6595643feb7aa3be1fb967bfd978c53e70ef363e000080bf0f7c1c3e0535843e7b6b8cbff6df9c4054c6dbbf5f488a3ed2786c3ffa168bbe747a76bfa3d1853ea84c8cbd000080bf4f783d3f9a5b553f32e6d63ff4df9c4099f5ce3f000000000000803f000000002be17ebf00000000b566bf3d000080bf0f7c1c3e97912a3effca8e3ff4df9c4099f5ce3f06dc92be86566a3f6ba2903eafe774bfa93684be18d609be000080bf1afb823eb891223ec24cd7bff6df9c4054c6dbbf000000000000803f00000000146a7ebf00000000b796e33d000080bff4e0563f9a5b553fc24cd7bff6df9c4076a49cbf2a7bb9be30705c3fc5abb63e90b666bf4db0d7be0429d03d000080bff4e0563f5d53403f32e6d63ff6df9c40747b853f0b88a23e6595643feb7aa3be9e8435bf8014a0b8ee8434bf000080bf90a20e3db9366c3f32e6d63fab089340747b853fe57d343f000000009d8b35bf9c8b35bf35fab0b9e47d34bf000080bf75e7093d5d877a3f7b6b8cbff6df9c4054c6dbbf5f488a3ed2786c3ffa168bbef99135bf543270387f7734bf000080bf59c0303f29256c3f7b6b8cbfaf08934054c6dbbfe57d343f000000009d8b35bf9b8b35bf6fcad339e47d34bf000080bf46d0303f5f9a7a3fc24cd7bff6df9c4076a49cbf2a7bb9be30705c3fc5abb63e4e9a333f0edac8b8c66c363f000080bf90a20e3db9366c3fc24cd7bfab0893407fa49cbf546536bf00000000dfa1333fdea1333f6340aeb95365363f000080bf75e7093d5d877a3fffca8e3ff4df9c4099f5ce3f06dc92be86566a3f6ba2903e6da8333f9a288138e15e363f000080bf59c0303f29256c3fffca8e3fab08934099f5ce3f566536bf00000000dca1333fdca1333f2aafcf395565363f000080bf46d0303f5f9a7a3ff65dd53f8f38ac3e5c93dabfe5bae1bd00dc7cbfc88de23dd04b323f27e81fbeb14c33bf0000803fd367c73d9928523ff65dd5bf8388ac3e5c93dabf3e78e13d60dc7cbf17b5e23d212232bfa8de1fbea37633bf0000803fa297b13d9a5d373ef65dd53fb2670fbdfb95dabfc2a9f1bd7e637cbf691bf33dcac4313fa0642bbef62833bf0000803f1b67f33d9928523ff65dd5bfb2670fbdfb95dabfeb55f23d815e7cbf80bbf33d45c631bfe4d92bbe7a2033bf0000803f1b67f33d9a5d373ef65dd5bfb2670fbdfb95dabfeb55f23d815e7cbf80bbf33d65cb67bc0d01f23d3d2e7e3f0000803fcba05a3b3673083ef65dd5bf8388ac3e5c93dabf3e78e13d60dc7cbf17b5e23d0ad447bcbf53e13d3a6d7e3f0000803f91485b3b09feb73df65dd5bfbe680fbd7fc2cd3f63a7f13db9637cbfaf0ef3bd364da93c90b8efbd672f7e3f0000803f1f477f3f5c91083ef65dd5bf6d38ac3e94bdcd3fef52e13debdb7cbf1bfbe2bd2a6e973cce29e0bdfb6a7e3f0000803f95477f3f4fb2d53df65dd5bf6d38ac3e94bdcd3fef52e13debdb7cbf1bfbe2bdf1717e3fcd57df3dcb00723c000080bf3fc8323b1d3d6a3ff65dd53fc424ac3e94bdcd3f508ee1bddbdb7cbf88c4e2bd51717e3f3345e0bd289140bc000080bfd1227f3f43756b3ff65dd5bfbe680fbd7fc2cd3f63a7f13db9637cbfaf0ef3bdf1357e3fbc44ef3d4634893c000080bfc138383b7423643ff65dd53fbe680fbd7fc2cd3fcbcef1bd76627cbf633bf3bd95357e3fb234f0bdc67a5ebc000080bf1c297f3f986c643ff65dd53fbe680fbd7fc2cd3fcbcef1bd76627cbf633bf3bd1da1313fcb7c2bbee44a333f000080bf4e5faf3d5da3353ef65dd53fc424ac3e94bdcd3f508ee1bddbdb7cbf88c4e2bd7ffd313fbeeb1fbe409a333f000080bf8f50733d5da3353ef65dd53fb2670fbdfb95dabfc2a9f1bd7e637cbf691bf33dd4c6313fa2642bbef22633bf000080bf4e5faf3d2997523ff65dd53f8f38ac3e5c93dabfe5bae1bd00dc7cbfc88de23dd14b323f27e81fbeb14c33bf000080bf54c9803d2997523f8f7010c0a0384c3f5794dabf7bb17ebfa412923ddc30923dbaa1cebdb9e730bf043b37bf0000803fd367c73d9928523f416510c0373684404694dabfb1b17ebf88ca91bda961923d3f91cebd589f303f148137bf0000803fa297b13d9a5d373ec9ab1fc0a0384c3fada7dabfc7717ebfdd6b9f3d30619f3dda66e1bd331531bf63b636bf0000803f1b67f33d9928523fc9ab1fc0373684409ca7dabfdc6e7ebfb5e59ebd630fa13d1839e2bdb6d92f3f11e237bf0000803f1b67f33d9a5d373ec9ab1fc0373684409ca7dabfdc6e7ebfb5e59ebd630fa13ded92a03d8212c83b05357f3f0000803fcba05a3b3673083e416510c0373684404694dabfb1b17ebf88ca91bda961923dd002923d5d87a63b62587f3f0000803f91485b3b09feb73dc9ab1fc03736844036b0cd3fe06e7ebf612ea0bdebc69fbdbed59ebd08ed11bcff377f3f0000803f1f477f3f5c91083e8f7010c0373684408bc3cd3f45b27ebfe43191bd4cb892bd38fa91bd9523fabb65577f3f0000803f95477f3f4fb2d53d8f7010c0373684408bc3cd3f45b27ebfe43191bd4cb892bd6aac903d115b7fbf8a5ec73b000080bf3fc8323b1d3d6a3f867210c08f384c3f7ac3cd3f49b27ebf356e913df97a92bdf81591bd8d5a7fbfcc3da0bb000080bfd1227f3f43756b3fc9ab1fc03736844036b0cd3fe06e7ebf612ea0bdebc69fbd35849f3d34377fbfa5e8eb3b000080bfc138383b7423643fc9ab1fc08f384c3f25b0cd3f896e7ebf3e259f3d33f1a0bd9faf9ebdd4397fbf4c7bc1bb000080bf1c297f3f986c643fc9ab1fc08f384c3f25b0cd3f896e7ebf3e259f3d33f1a0bd1250e2bd04cb35bf2c02323f000080bf4e5faf3d5da3353e867210c08f384c3f7ac3cd3f49b27ebf356e913df97a92bd1362cebd2ea036bfb488313f000080bf8f50733d5da3353ec9ab1fc0a0384c3fada7dabfc7717ebfdd6b9f3d30619f3dda66e1bd301531bf66b636bf000080bf4e5faf3d2997523f8f7010c0a0384c3f5794dabf7bb17ebfa412923ddc30923dbaa1cebdb9e730bf043b37bf000080bf54c9803d2997523f952bd4bf8f384c3f823c0d40a032923d6512923d77b17e3f073c37bfa4e630bf43a3ce3d0000803fd367c73d9928523f952bd4bf373684403c310d40b562923daccb91bdabb17e3fd48037bf929f303f4393ce3d0000803fa297b13d9a5d373eea3ed4bf8f384c3fbc771c409381a03dbe2ea13d826a7e3fb75236bf647131bf4271e33d0000803f1b67f33d9928523fea3ed4bf37368440c4771c4078b6a23d5a10a0bdbb677e3fe01638bf1a982f3fe637e43d0000803f1b67f33d9a5d373eea3ed4bf37368440c4771c4078b6a23d5a10a0bdbb677e3fd6307f3f9aa0cb3bdd36a2bd0000803fcba05a3b3673083e952bd4bf373684403c310d40b562923daccb91bdabb17e3f60587f3fde89a63bdb0392bd0000803f91485b3b09feb73d9318d43f37368440c4771c40134ba1bd6b26a2bd11667e3f2d347f3fdcb014bcab52a03d0000803f1f477f3f5c91083e952bd43f373684408a3c0d4078b892bd9e3491bd3fb27e3f63577f3fa028fabb5cfa913d0000803f95477f3f4fb2d53d952bd43f373684408a3c0d4078b892bd9e3491bd3fb27e3fd269c73b095b7fbf18af90bd000080bf3fc8323b1d3d6a3f952bd43f8f384c3f4f3e0d40b57b92bd826f913d45b27e3f2b3aa0bb8b5a7fbf4b17913d000080bfd1227f3f43756b3f9318d43f37368440c4771c40134ba1bd6b26a2bd11667e3fb0b1f03b3a327fbf5a77a1bd000080bfc138383b7423643f9318d43f8f384c3fbc771c407efca2bd3391a03dc2657e3f6dbdc5bb43367fbf6e17a03d000080bf1c297f3f986c643f9318d43f8f384c3fbc771c407efca2bd3391a03dc2657e3fbb68323f0e5a35bf74c4e43d000080bf4e5faf3d5da3353e952bd43f8f384c3f4f3e0d40b57b92bd826f913d45b27e3f7f96313fbf9236bf7863ce3d000080bf8f50733d5da3353eea3ed4bf8f384c3fbc771c409381a03dbe2ea13d826a7e3fa65236bf767131bf4271e33d000080bf4e5faf3d2997523f952bd4bf8f384c3f823c0d40a032923d6512923d77b17e3f073c37bfa4e630bf43a3ce3d000080bf54c9803d2997523f952bd43fa0384c3ff0a413c0a63292bd0013923d75b17ebfab3b373f01e730bf0da4cebd0000803fd367c73d9928523f952bd43f373684409a9913c0af6292bd18cb91bdadb17ebf2b81373f3a9f303f7392cebd0000803fa297b13d9a5d373eea3ed43fa0384c3f2ae022c05681a0bdfe2ea13d826a7ebf7352363faa7131bf4371e3bd0000803f1b67f33d9928523fea3ed43f3736844022e022c054b6a2bdbd0fa0bdbd677ebf2517383fd5972f3f5037e4bd0000803f1b67f33d9a5d373eea3ed43f3736844022e022c054b6a2bdbd0fa0bdbd677ebfd6307fbfa49fcb3bb936a23d0000803fcba05a3b3673083e952bd43f373684409a9913c0af6292bd18cb91bdadb17ebf60587fbf2f89a63bd603923d0000803f91485b3b09feb73d9318d4bf3736844022e022c04d4ba13d0726a2bd11667ebf2d347fbf31b014bce652a0bd0000803f1f477f3f5c91083e952bd4bf37368440e8a413c072b8923d0a3491bd41b27ebf63577fbf9a27fabb58fa91bd0000803f95477f3f4fb2d53d952bd4bf37368440e8a413c072b8923d0a3491bd41b27ebfcf69c7bb0b5b7fbf83ae903d000080bf3fc8323b1d3d6a3f952bd4bfa0384c3fbda613c0bc7b923d1d70913d43b27ebf473aa03b895a7fbfe41791bd000080bfd1227f3f43756b3f9318d4bf3736844022e022c04d4ba13d0726a2bd11667ebf31b2f0bb3c327fbff676a13d000080bfc138383b7423643f9318d4bfa0384c3f2ae022c03cfca23d7091a03dc2657ebfa5bcc53b43367fbfab17a0bd000080bf1c297f3f986c643f9318d4bfa0384c3f2ae022c03cfca23d7091a03dc2657ebf726832bf575a35bf78c4e4bd000080bf4e5faf3d5da3353e952bd4bfa0384c3fbda613c0bc7b923d1d70913d43b27ebf209631bf189336bf4564cebd000080bf8f50733d5da3353eea3ed43fa0384c3f2ae022c05681a0bdfe2ea13d826a7ebf6252363fbd7131bf4371e3bd000080bf4e5faf3d2997523f952bd43fa0384c3ff0a413c0a63292bd0013923d75b17ebfab3b373f01e730bf0da4cebd000080bf54c9803d2997523f8f7010408f384c3f7ac3cd3f77b17e3fbc12923d663292bd51a3ce3dd6e630bfd83b373f0000803fd367c73d9928523f41651040373684408bc3cd3fadb17e3f48cb91bd7a6292bd7a92ce3d799f303fef80373f0000803fa297b13d9a5d373ec9ab1f408f384c3fd0d6cd3fc7717e3ff76b9f3d2c619fbdcb66e13d451531bf51b6363f0000803f1b67f33d9928523fc9ab1f4037368440e0d6cd3fdc6e7e3fbde59ebd770fa1bded38e23dd4d92f3ff4e1373f0000803f1b67f33d9a5d373ec9ab1f4037368440e0d6cd3fdc6e7e3fbde59ebd770fa1bd0193a0bda612c83b05357fbf0000803fcba05a3b3673083e41651040373684408bc3cd3fadb17e3f48cb91bd7a6292bda10392bd4489a63b60587fbf0000803f91485b3b09feb73dc9ab1f4037368440f180dabfe06e7e3f682ea0bdf3c69f3dc5d59e3d3bed11bcff377fbf0000803f1f477f3f5c91083e8f701040373684404694dabf41b27e3f793391bd53b8923d39fa913d5326fabb65577fbf0000803f95477f3f4fb2d53d8f701040373684404694dabf41b27e3f793391bd53b8923df4ad90bd0d5b7fbfc668c7bb000080bf3fc8323b1d3d6a3f5c721040a0384c3f5794dabf47b27e3fcd6e913d9d7b923d9b16913d8d5a7fbfea34a03b000080bfd1227f3f43756b3fc9ab1f4037368440f180dabfe06e7e3f682ea0bdf3c69f3d32849fbd34377fbf0df1ebbb000080bfc138383b7423643fc9ab1f40a0384c3f0281dabf826e7e3fdd269f3de2f2a03d47b19e3dd0397fbf2175c13b000080bf1c297f3f986c643fc9ab1f40a0384c3f0281dabf826e7e3fdd269f3de2f2a03dae51e23de9ca35bf3f0232bf000080bf4e5faf3d5da3353e5c721040a0384c3f5794dabf47b27e3fcd6e913d9d7b923d6c62ce3d1ba036bfc78831bf000080bf8f50733d5da3353ec9ab1f408f384c3fd0d6cd3fc7717e3ff76b9f3d2c619fbdcc66e13d401531bf56b6363f000080bf4e5faf3d2997523f8f7010408f384c3f7ac3cd3f77b17e3fbc12923d663292bd4fa3ce3dd5e630bfd83b373f000080bf54c9803d2997523ff65dd53f8f38ac3e5c93dabfe5bae1bd00dc7cbfc88de23d0015493cb927e13dc66d7e3f000080bf1f9d2a3efddc543ff65dd53fc424ac3e94bdcd3f508ee1bddbdb7cbf88c4e2bdf6d348bcba5fe1bd046d7e3f000080bfb858553ffddc543ff65dd5bf8388ac3e5c93dabf3e78e13d60dc7cbf17b5e23d401d49bc294fe13d3a6d7e3f000080bf1f9d2a3e0d8c2c3ef65dd5bf6d38ac3e94bdcd3fef52e13debdb7cbf1bfbe2bdadaf483c2497e1bd416c7e3f000080bfb858553f0d8c2c3e8f7010c0a0384c3f5794dabf7bb17ebfa412923ddc30923df3d091bd815aa73bd1587fbf000080bf36907e3f00000000867210c08f384c3f7ac3cd3f49b27ebf356e913df97a92bd261c923dc590a6bb28587fbf000080bf931a5a3800000000416510c0373684404694dabfb1b17ebf88ca91bda961923dc80192bdbe6fa7bb62587fbf000080bf36907e3f0000803f8f7010c0373684408bc3cd3f45b27ebfe43191bd4cb892bdd959923d9e5fa63b9b577fbf000080bf000000000000803f952bd4bf8f384c3f823c0d40a032923d6512923d77b17e3fcd587fbfe257a73bb9d2913d000080bf36907e3f00000000952bd43f8f384c3f4f3e0d40b57b92bd826f913d45b27e3f26587fbf4995a6bbdf1c92bd000080bf931a5a3800000000952bd4bf373684403c310d40b562923daccb91bdabb17e3f60587fbf9e72a7bbcf02923d000080bf36907e3f0000803f952bd43f373684408a3c0d4078b892bd9e3491bd3fb27e3f9b577fbff162a63b035a92bd000080bf000000000000803f952bd43fa0384c3ff0a413c0a63292bd0013923d75b17ebfcd587f3f9b58a73bbed291bd000080bf36907e3f00000000952bd4bfa0384c3fbda613c0bc7b923d1d70913d43b27ebf26587f3f0396a6bbe41c923d000080bf931a5a3800000000952bd43f373684409a9913c0af6292bd18cb91bdadb17ebf60587f3fef71a7bbca0292bd000080bf36907e3f0000803f952bd4bf37368440e8a413c072b8923d0a3491bd41b27ebf9b577f3f4062a63bfe59923d000080bf000000000000803f8f7010408f384c3f7ac3cd3f77b17e3fbc12923d663292bd82d2913d7455a73bcd587f3f000080bf36907e3f000000005c721040a0384c3f5794dabf47b27e3fcd6e913d9d7b923dc51c92bda895a6bb26587f3f000080bf931a5a380000000041651040373684408bc3cd3fadb17e3f48cb91bd7a6292bd9302923d2e73a7bb60587f3f000080bf36907e3f0000803f8f701040373684404694dabf41b27e3f793391bd53b8923ddd5992bd7661a63b9b577f3f000080bf000000000000803ff65dd53fbe680fbd7fc2cd3fcbcef1bd76627cbf633bf3bdc65587bcdbeaf0bdf72f7e3f000080bffce05c3f9a5b553fecfa1fc0be680fbdb5c61c4000000000000080bf00000000718fb0bc00000000c7f07f3f000080bf0000803f00000000f65dd5bfbe680fbd7fc2cd3f63a7f13db9637cbfaf0ef3bd64d169bca730f8bd42167e3f000080bffce05c3fb891223eecfa1f40be680fbdb5c61c4000000000000080bf0000000000000000000000000000803f000080bf0000803f0000803fecfa1fc0b2670fbd232f23c000000000000080bf000000008734bf3c0000000025ee7f3f000080bf0000000000000000f65dd53fb2670fbdfb95dabfc2a9f1bd7e637cbf691bf33d94120a3cc0c5f23d932f7e3f000080bf317c043e9a5b553ff65dd5bfb2670fbdfb95dabfeb55f23d815e7cbf80bbf33d2e72d03b3efef63d4f207e3f000080bf0f7c0c3eb891223eecfa1f40b2670fbd232f23c000000000000080bf000000006233cd3a00000000ecff7f3f000080bf000000000000803ff65dd53f1cdc9e404b93dabf51cef1bd78627c3f233bf33d5f5587bc9deaf03df92f7ebf000080bffce05c3f9a5b553fecfa1fc01cdc9e401b2f23c0000000000000803f00000000718fb0bc00000000c7f07fbf000080bf0000803f00000000f65dd5bf1cdc9e404b93dabf35a7f13db9637c3fc90ef33d92d169bcc130f83d42167ebf000080bffce05c3fb891223eecfa1f401cdc9e401b2f23c0000000000000803f000000000000000000000000000080bf000080bf0000803f0000803fecfa1fc016dc9e40bdc61c40000000000000803f000000008c34bf3c0000000025ee7fbf000080bf0000000000000000f65dd53f16dc9e4037c5cd3f6fa9f1bd82637c3ff91af3bde8110a3c54c5f2bd952f7ebf000080bf317c043e9a5b553ff65dd5bf16dc9e4037c5cd3f9d55f23d835e7c3f0cbbf3bd9a73d03bc6fdf6bd51207ebf000080bf0f7c0c3eb891223eecfa1f4016dc9e40bdc61c40000000000000803f000000007733cd3a00000000ecff7fbf000080bf000000000000803fbbd51f40b2670fbdb91623c04553353ff38b263b33b634bf4aa034bfa4e5e8bc014435bf0000803f0000803f00000000bbd51f401cdc9e40ad1623c07de4343f9aa021bb1b2535bf052535bf9ae4c33ac1e434bf0000803f0000803f0000803fc9ab1f40a0384c3f0281dabf826e7e3fdd269f3de2f2a03d76bfa33de6b56fbc26277fbf0000803ffce05c3fb891223ec9ab1f408f384c3fd0d6cd3fc7717e3ff76b9f3d2c619fbd156ba3bdf8b5b83c521e7fbf0000803f0f7c0c3eb891223ec9ab1f4037368440f180dabfe06e7e3f682ea0bdf3c69f3d5438a03d585b9db924377fbf0000803ffce05c3f9a5b553ffad01f40be680fbdccb71c407bbe343f2389213b074b353ff736353f5362de3cadb034bf0000803f0000000000000000fad01f4016dc9e40d4b71c40f12f353fc2aa2fbb96d9343f41d9343f088c2fbb463035bf0000803f000000000000803fc9ab1f4037368440e0d6cd3fdc6e7e3fbde59ebd770fa1bdc333a0bd711f0a3cda347fbf0000803f317c043e9a5b553ffad01fc0b2670fbd3a2023c07bbe34bf5d8e213b074b35bfb93b35bfae75e8bcbea8343f0000803f0000803f00000000fad01fc01cdc9e40322023c0e52f35bf44a42fbba2d934bff2d934bf8716e13ac82f353f0000803f0000803f0000803f9318d4bfa0384c3f2ae022c03cfca23d7091a03dc2657ebfd9217fbfb91b6fbc67d0a5bd0000803ffce05c3fb891223eea3ed43fa0384c3f2ae022c05681a0bdfe2ea13d826a7ebf4d1b7fbff19cb83c8c98a43d0000803f0f7c0c3eb891223e9318d4bf3736844022e022c04d4ba13d0726a2bd11667ebf4a337fbfb79fbcb964bea1bd0000803ffce05c3f9a5b553fbbd51f40b2670fbdb91623c04553353ff38b263b33b634bf64a834bf5b37df3cf93e35bf0000803f0000000000000000bbd51f401cdc9e40ad1623c07de4343f9aa021bb1b2535bf642535bfcfdb21bb34e434bf0000803f000000000000803fea3ed43f3736844022e022c054b6a2bdbd0fa0bdbd677ebfaa307fbf710d0b3ce5d8a13d0000803f317c043e9a5b553fbbd51fc016dc9e4053ae1c407ae434bf43ab21bb1f25353f6625353fe2c921bb33e4343f0000803f000000000000803fbbd51fc0be680fbd4bae1c40475335bf6486263b30b6343f61a8343f8437df3cfd3e353f0000803f0000000000000000ea3ed4bf37368440c4771c4078b6a23d5a10a0bdbb677e3faa307f3fb2130b3cf9d8a1bd0000803f317c043e9a5b553f9318d43f37368440c4771c40134ba1bd6b26a2bd11667e3f4c337f3fd18abdb91abea13d0000803ffce05c3f9a5b553fea3ed4bf8f384c3fbc771c409381a03dbe2ea13d826a7e3f4d1b7f3f0a9db83ccb98a4bd0000803f0f7c0c3eb891223efad01f4016dc9e40d4b71c40f12f353fc2aa2fbb96d9343fe5d9343f37f1e03ad42f35bf0000803f0000803f0000803ffad01f40be680fbdccb71c407bbe343f2389213b074b353fb93b353f7475e8bcbea834bf0000803f0000803f000000009318d43f8f384c3fbc771c407efca2bd3391a03dc2657e3fd7217f3f0c1d6fbcabd0a53d0000803ffce05c3fb891223ec9ab1fc08f384c3f25b0cd3f896e7ebf3e259f3d33f1a0bdc5bda3bd62ba6fbc2a277f3f0000803ffce05c3fb891223ebbd51fc016dc9e4053ae1c407ae434bf43ab21bb1f25353f0a25353f6ca6c33abde4343f0000803f0000803f0000803fc9ab1fc03736844036b0cd3fe06e7ebf612ea0bdebc69fbd3438a0bd21819eb924377f3f0000803ffce05c3f9a5b553fbbd51fc0be680fbd4bae1c40475335bf6486263b30b6343f48a0343f57e6e8bc0144353f0000803f0000803f00000000fad01fc01cdc9e40322023c0e52f35bf44a42fbba2d934bf4ed934bffaa62fbb3a30353f0000803f000000000000803fc9ab1fc0a0384c3fada7dabfc7717ebfdd6b9f3d30619f3d176ba33daab5b83c521e7f3f0000803f0f7c0c3eb891223ec9ab1fc0373684409ca7dabfdc6e7ebfb5e59ebd630fa13dbb33a03d87190a3cda347f3f0000803f317c043e9a5b553ffad01fc0b2670fbd3a2023c07bbe34bf5d8e213b074b35bff73635bf6c61de3cafb0343f0000803f0000000000000000 101 | m_CompressedMesh: 102 | m_Vertices: 103 | m_NumItems: 0 104 | m_Range: 0 105 | m_Start: 0 106 | m_Data: 107 | m_BitSize: 0 108 | m_UV: 109 | m_NumItems: 0 110 | m_Range: 0 111 | m_Start: 0 112 | m_Data: 113 | m_BitSize: 0 114 | m_Normals: 115 | m_NumItems: 0 116 | m_Range: 0 117 | m_Start: 0 118 | m_Data: 119 | m_BitSize: 0 120 | m_Tangents: 121 | m_NumItems: 0 122 | m_Range: 0 123 | m_Start: 0 124 | m_Data: 125 | m_BitSize: 0 126 | m_Weights: 127 | m_NumItems: 0 128 | m_Data: 129 | m_BitSize: 0 130 | m_NormalSigns: 131 | m_NumItems: 0 132 | m_Data: 133 | m_BitSize: 0 134 | m_TangentSigns: 135 | m_NumItems: 0 136 | m_Data: 137 | m_BitSize: 0 138 | m_FloatColors: 139 | m_NumItems: 0 140 | m_Range: 0 141 | m_Start: 0 142 | m_Data: 143 | m_BitSize: 0 144 | m_BoneIndices: 145 | m_NumItems: 0 146 | m_Data: 147 | m_BitSize: 0 148 | m_Triangles: 149 | m_NumItems: 0 150 | m_Data: 151 | m_BitSize: 0 152 | m_UVInfo: 0 153 | m_LocalAABB: 154 | m_Center: {x: 0, y: 2.4646785, z: -0.050060987} 155 | m_Extent: {x: 2.49969, y: 2.4996903, z: 2.499691} 156 | m_MeshUsageFlags: 0 157 | m_CookingOptions: 30 158 | m_BakedConvexCollisionMesh: 159 | m_BakedTriangleCollisionMesh: 160 | m_MeshMetrics[0]: 30.155127 161 | m_MeshMetrics[1]: 1 162 | m_MeshOptimizationFlags: -1 163 | m_StreamData: 164 | serializedVersion: 2 165 | offset: 0 166 | size: 0 167 | path: 168 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateMesh.mesh.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 69c89ee38ad604d99838c711e58ce57f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 4300000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateSoundBreak.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeffreylanters/react-unity-webgl-template/d54b8bbe2cd05a704f7f6eb7a87fed938b9d71b1/project/Assets/Objects/Crate/CrateSoundBreak.mp3 -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateSoundBreak.mp3.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53435fa565d524f1da6086a8724b2a7b 3 | AudioImporter: 4 | externalObjects: {} 5 | serializedVersion: 6 6 | defaultSettings: 7 | loadType: 0 8 | sampleRateSetting: 0 9 | sampleRateOverride: 44100 10 | compressionFormat: 1 11 | quality: 1 12 | conversionMode: 0 13 | platformSettingOverrides: {} 14 | forceToMono: 1 15 | normalize: 1 16 | preloadAudioData: 1 17 | loadInBackground: 0 18 | ambisonic: 0 19 | 3D: 1 20 | userData: 21 | assetBundleName: 22 | assetBundleVariant: 23 | -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeffreylanters/react-unity-webgl-template/d54b8bbe2cd05a704f7f6eb7a87fed938b9d71b1/project/Assets/Objects/Crate/CrateTexture.png -------------------------------------------------------------------------------- /project/Assets/Objects/Crate/CrateTexture.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 929a96fb13f4a4265a82061f01e8802f 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | platformSettings: 69 | - serializedVersion: 3 70 | buildTarget: DefaultTexturePlatform 71 | maxTextureSize: 2048 72 | resizeAlgorithm: 0 73 | textureFormat: -1 74 | textureCompression: 1 75 | compressionQuality: 50 76 | crunchedCompression: 0 77 | allowsAlphaSplitting: 0 78 | overridden: 0 79 | androidETC2FallbackOverride: 0 80 | forceMaximumCompressionQuality_BC6H_BC7: 0 81 | spriteSheet: 82 | serializedVersion: 2 83 | sprites: [] 84 | outline: [] 85 | physicsShape: [] 86 | bones: [] 87 | spriteID: 88 | internalID: 0 89 | vertices: [] 90 | indices: 91 | edges: [] 92 | weights: [] 93 | secondaryTextures: [] 94 | nameFileIdTable: {} 95 | spritePackingTag: 96 | pSDRemoveMatte: 0 97 | userData: 98 | assetBundleName: 99 | assetBundleVariant: 100 | -------------------------------------------------------------------------------- /project/Assets/Objects/Fonts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f8e7070d672d4c249711510dd5fa4fb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Fonts/CrashAlike.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeffreylanters/react-unity-webgl-template/d54b8bbe2cd05a704f7f6eb7a87fed938b9d71b1/project/Assets/Objects/Fonts/CrashAlike.ttf -------------------------------------------------------------------------------- /project/Assets/Objects/Fonts/CrashAlike.ttf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0cdd46850d3fa4c849e9bbc04882c274 3 | TrueTypeFontImporter: 4 | externalObjects: {} 5 | serializedVersion: 4 6 | fontSize: 16 7 | forceTextureCase: -2 8 | characterSpacing: 0 9 | characterPadding: 1 10 | includeFontData: 1 11 | fontNames: 12 | - Crash-a-Like 13 | fallbackFontReferences: [] 14 | customCharacters: 15 | fontRenderingMode: 0 16 | ascentCalculationMode: 1 17 | useLegacyBoundsCalculation: 0 18 | shouldRoundAdvanceValue: 1 19 | userData: 20 | assetBundleName: 21 | assetBundleVariant: 22 | -------------------------------------------------------------------------------- /project/Assets/Objects/Skybox.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cf9b025d3111b458fa9bf9a2dd3b548f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Skybox/SkyboxMaterial.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 8 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: SkyboxMaterial 11 | m_Shader: {fileID: 10703, guid: 0000000000000000f000000000000000, type: 0} 12 | m_Parent: {fileID: 0} 13 | m_ModifiedSerializedProperties: 0 14 | m_ValidKeywords: [] 15 | m_InvalidKeywords: [] 16 | m_LightmapFlags: 4 17 | m_EnableInstancingVariants: 0 18 | m_DoubleSidedGI: 0 19 | m_CustomRenderQueue: -1 20 | stringTagMap: {} 21 | disabledShaderPasses: [] 22 | m_LockedProperties: 23 | m_SavedProperties: 24 | serializedVersion: 3 25 | m_TexEnvs: 26 | - _BumpMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailAlbedoMap: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailMask: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _DetailNormalMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _EmissionMap: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MainTex: 47 | m_Texture: {fileID: 2800000, guid: ba2a6cf9bf5b042dd8abece62fa8db63, type: 3} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _MetallicGlossMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _OcclusionMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | - _ParallaxMap: 59 | m_Texture: {fileID: 0} 60 | m_Scale: {x: 1, y: 1} 61 | m_Offset: {x: 0, y: 0} 62 | m_Ints: [] 63 | m_Floats: 64 | - _BumpScale: 1 65 | - _Cutoff: 0.5 66 | - _DetailNormalMapScale: 1 67 | - _DstBlend: 0 68 | - _GlossMapScale: 1 69 | - _Glossiness: 0.5 70 | - _GlossyReflections: 1 71 | - _Metallic: 0 72 | - _Mode: 0 73 | - _OcclusionStrength: 1 74 | - _Parallax: 0.02 75 | - _SmoothnessTextureChannel: 0 76 | - _SpecularHighlights: 1 77 | - _SrcBlend: 1 78 | - _UVSec: 0 79 | - _ZWrite: 1 80 | m_Colors: 81 | - _Color: {r: 1, g: 1, b: 1, a: 1} 82 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 83 | m_BuildTextureStacks: [] 84 | -------------------------------------------------------------------------------- /project/Assets/Objects/Skybox/SkyboxMaterial.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d49e56873600e444ea1fb307efea5224 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Objects/Skybox/SkyboxMaterial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeffreylanters/react-unity-webgl-template/d54b8bbe2cd05a704f7f6eb7a87fed938b9d71b1/project/Assets/Objects/Skybox/SkyboxMaterial.png -------------------------------------------------------------------------------- /project/Assets/Objects/Skybox/SkyboxMaterial.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba2a6cf9bf5b042dd8abece62fa8db63 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | flipGreenChannel: 0 24 | isReadable: 0 25 | streamingMipmaps: 0 26 | streamingMipmapsPriority: 0 27 | vTOnly: 0 28 | ignoreMasterTextureLimit: 0 29 | grayScaleToAlpha: 0 30 | generateCubemap: 6 31 | cubemapConvolution: 0 32 | seamlessCubemap: 0 33 | textureFormat: 1 34 | maxTextureSize: 2048 35 | textureSettings: 36 | serializedVersion: 2 37 | filterMode: 1 38 | aniso: 1 39 | mipBias: 0 40 | wrapU: 0 41 | wrapV: 0 42 | wrapW: 0 43 | nPOTScale: 1 44 | lightmap: 0 45 | compressionQuality: 50 46 | spriteMode: 0 47 | spriteExtrude: 1 48 | spriteMeshType: 1 49 | alignment: 0 50 | spritePivot: {x: 0.5, y: 0.5} 51 | spritePixelsToUnits: 100 52 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 53 | spriteGenerateFallbackPhysicsShape: 1 54 | alphaUsage: 1 55 | alphaIsTransparency: 0 56 | spriteTessellationDetail: -1 57 | textureType: 0 58 | textureShape: 1 59 | singleChannelComponent: 0 60 | flipbookRows: 1 61 | flipbookColumns: 1 62 | maxTextureSizeSet: 0 63 | compressionQualitySet: 0 64 | textureFormatSet: 0 65 | ignorePngGamma: 0 66 | applyGammaDecoding: 0 67 | swizzle: 50462976 68 | platformSettings: 69 | - serializedVersion: 3 70 | buildTarget: DefaultTexturePlatform 71 | maxTextureSize: 2048 72 | resizeAlgorithm: 0 73 | textureFormat: -1 74 | textureCompression: 1 75 | compressionQuality: 50 76 | crunchedCompression: 0 77 | allowsAlphaSplitting: 0 78 | overridden: 0 79 | androidETC2FallbackOverride: 0 80 | forceMaximumCompressionQuality_BC6H_BC7: 0 81 | spriteSheet: 82 | serializedVersion: 2 83 | sprites: [] 84 | outline: [] 85 | physicsShape: [] 86 | bones: [] 87 | spriteID: 88 | internalID: 0 89 | vertices: [] 90 | indices: 91 | edges: [] 92 | weights: [] 93 | secondaryTextures: [] 94 | nameFileIdTable: {} 95 | spritePackingTag: 96 | pSDRemoveMatte: 0 97 | userData: 98 | assetBundleName: 99 | assetBundleVariant: 100 | -------------------------------------------------------------------------------- /project/Assets/Objects/Skybox/SkyboxMesh.mesh: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!43 &4300000 4 | Mesh: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: SkyboxMesh 10 | serializedVersion: 11 11 | m_SubMeshes: 12 | - serializedVersion: 2 13 | firstByte: 0 14 | indexCount: 120 15 | topology: 0 16 | baseVertex: 0 17 | firstVertex: 0 18 | vertexCount: 34 19 | localAABB: 20 | m_Center: {x: -0.00012207031, y: 258.78787, z: 0} 21 | m_Extent: {x: 1038.1886, y: 779.4009, z: 1038.1885} 22 | - serializedVersion: 2 23 | firstByte: 240 24 | indexCount: 48 25 | topology: 0 26 | baseVertex: 0 27 | firstVertex: 34 28 | vertexCount: 20 29 | localAABB: 30 | m_Center: {x: -0.000061035156, y: 296.76974, z: 0} 31 | m_Extent: {x: 939.5489, y: 256.1473, z: 939.5488} 32 | - serializedVersion: 2 33 | firstByte: 336 34 | indexCount: 48 35 | topology: 0 36 | baseVertex: 0 37 | firstVertex: 54 38 | vertexCount: 20 39 | localAABB: 40 | m_Center: {x: -0.000061035156, y: 391.07986, z: 0} 41 | m_Extent: {x: 750.1605, y: 204.51474, z: 750.16046} 42 | - serializedVersion: 2 43 | firstByte: 432 44 | indexCount: 48 45 | topology: 0 46 | baseVertex: 0 47 | firstVertex: 74 48 | vertexCount: 20 49 | localAABB: 50 | m_Center: {x: -0.000061035156, y: 430.8487, z: 0} 51 | m_Extent: {x: 853.5598, y: 232.70427, z: 853.55975} 52 | - serializedVersion: 2 53 | firstByte: 528 54 | indexCount: 156 55 | topology: 0 56 | baseVertex: 0 57 | firstVertex: 94 58 | vertexCount: 41 59 | localAABB: 60 | m_Center: {x: 0, y: 22.300102, z: 0} 61 | m_Extent: {x: 565.4194, y: 50.800102, z: 572.9283} 62 | m_Shapes: 63 | vertices: [] 64 | shapes: [] 65 | channels: [] 66 | fullWeights: [] 67 | m_BindPose: [] 68 | m_BoneNameHashes: 69 | m_RootBoneNameHash: 0 70 | m_BonesAABB: [] 71 | m_VariableBoneCountWeights: 72 | m_Data: 73 | m_MeshCompression: 0 74 | m_IsReadable: 0 75 | m_KeepVertices: 1 76 | m_KeepIndices: 1 77 | m_IndexFormat: 0 78 | m_IndexBuffer: 000001000200020003000000040000000300030005000400060004000500070006000500080007000500050003000900090008000500030002000900080009000a000b0008000a000c000b000a000a000d000c0009000e000a000d000a000e000e00090002000e000f000d000f000e000200020010000f00110012001300130014001100150011001400140016001500170015001600180017001600190018001600160014001a001a0019001600140013001a0019001a001b001c0019001b001d001c001b001b001e001d001a001f001b001e001b001f001f001a0013001f0020001e0020001f00130013002100200022002300240025002200240024002600250027002500260026002800270029002700280028002a0029002b0029002a002c002d002e002f002e002d002d0030002f0031002f00300030003200310033003100320032003400330034003500330036003700380039003600380038003a0039003b0039003a003a003c003b003d003b003c003c003e003d003f003d003e004000410042004300420041004100440043004500430044004400460045004700450046004600480047004800490047004a004b004c004d004a004c004c004e004d004f004d004e004e0050004f0051004f00500050005200510053005100520054005500560057005600550055005800570059005700580058005a0059005b0059005a005a005c005b005c005d005b005e005f00600061005e006000620060005f005f006300620063006400620060006500610066006100650067006600650068006700650069006200640064006a0069006a006b0069006b006c006900600062006d006d0065006000620069006d0065006d006e0065006e00680069006f006d006f0069006c00700068006e00710070006e006c0072006f00730071006e0074006f0072006f0074006d007200750074007500760074007600770074006e007800730078006e006d007900730078007a00790078007b007400770074007b006d0077007c007b007c007d007b007d007e007b0078007f007a007f0078006d0080007a007f00810080007f0082007b007e007b0082006d007e00830082008300840082007f008500810085007f006d00820085006d00850082008400860081008500840086008500 79 | m_VertexData: 80 | serializedVersion: 3 81 | m_VertexCount: 135 82 | m_Channels: 83 | - stream: 0 84 | offset: 0 85 | format: 0 86 | dimension: 3 87 | - stream: 0 88 | offset: 12 89 | format: 0 90 | dimension: 3 91 | - stream: 0 92 | offset: 24 93 | format: 0 94 | dimension: 4 95 | - stream: 0 96 | offset: 0 97 | format: 0 98 | dimension: 0 99 | - stream: 0 100 | offset: 40 101 | format: 0 102 | dimension: 2 103 | - stream: 0 104 | offset: 0 105 | format: 0 106 | dimension: 0 107 | - stream: 0 108 | offset: 0 109 | format: 0 110 | dimension: 0 111 | - stream: 0 112 | offset: 0 113 | format: 0 114 | dimension: 0 115 | - stream: 0 116 | offset: 0 117 | format: 0 118 | dimension: 0 119 | - stream: 0 120 | offset: 0 121 | format: 0 122 | dimension: 0 123 | - stream: 0 124 | offset: 0 125 | format: 0 126 | dimension: 0 127 | - stream: 0 128 | offset: 0 129 | format: 0 130 | dimension: 0 131 | - stream: 0 132 | offset: 0 133 | format: 0 134 | dimension: 0 135 | - stream: 0 136 | offset: 0 137 | format: 0 138 | dimension: 0 139 | m_DataSize: 6480 140 | _typelessdata: 0ac601c4073670445ea024b9b402f83e1c904fbfde3da8be83a5163f28e7c43c06e44e3f000080bf860080bf3333733f000000000ac68144983531b900000000000080bf00000000f304353f00000000f304353f000080bf0c0180be07b67e3f000000000836704407c60144000000002ac45bbfed4b03bf0000803f0000000000000000000080bf0000003f3333733f85f01ec40bc6014484f01e4422aa1f3f1c40f1be22aa1fbff304353f00000000f304353f000080bf0c0180be8595663f42c660c409c601440742b2b88ad6563f091fd6be3bf9b1be47eec33e0000000089836c3f000080bf860080bf8595663f0f8737c482a8fb380e8737443fca283fe6feb83e3fca28bff204353f00000000f304353f000080bf0c0180be5648993d0ac681c4000000000000000016ab5e3f4698ac3e2479b8bedff0c33e0000000000836c3f000080bf860080bf5648993d000000003b2702c40742b238000000000000803f00000000f404353f00000000f104353f000080bf0c0180be0ad7a33b931ada37e65a343908c681440000000081feb83e98b46ebf0000803f0000000000000000000080bf0000003f5648993d000000000bc6014440c6604400000000d65be4be732065bf0000803f0000000000000000000080bf0000003f8595663f0e87374482a8fb380e8737443fca28bfe6feb83e3fca28bff204353f00000000f30435bf000080bf4300a03f5648993d000000003b2702c40742b238000000000000803f00000000f304353f00000000f20435bf000080bf4300a03f0ad7a33b08c68144000000000000000016ab5ebf4698ac3e2479b8bedff0c33e0000000000836cbf000080bf430000405648993d41c6604409c601440742b2b88ad656bf091fd6be3bf9b1be45eec33e0000000089836cbf000080bf430000408595663f84f01e440bc6014483f01e4422aa1fbf1c40f1be22aa1fbff304353f00000000f30435bf000080bf4300a03f8595663f08c60144073670445ea024b9b402f8be1c904fbfde3da8be82a5163f17e7c4bc06e44ebf000080bf430000403333733f000000000ac68144983531b900000000000080bf00000000f204353f00000000f40435bf000080bf4300a03f07b67e3f08c60144073670445ea024b9b402f8be1c904fbfde3da83e80a516bffce6c43c06e44ebf000080bf860080bf3333733f000000000ac68144983531b900000000000080bf00000000f30435bf00000000f30435bf000080bf0c0180be07b67e3f00000000063670440bc601c4000000002ac45bbfed4b033f000080bf0000000000000000000080bf0000003f3333733f84f01e4407c6014485f01ec422aa1fbf1c40f1be22aa1f3ff30435bf00000000f30435bf000080bf0c0180be8595663f41c6604409c601440742b2b88ad656bf091fd6be3bf9b13e44eec3be000000008b836cbf000080bf860080bf8595663f0e87374482a8fbb80e8737c43fca28bfe6feb83e3fca283ff30435bf00000000f30435bf000080bf0c0180be5648993d08c68144000000000000000016ab5ebf4698ac3e2479b83ee2f0c3be00000000ff826cbf000080bf860080bf5648993d000000003b2702c40742b238000000000000803f00000000f30435bf00000000f20435bf000080bf0c0180be0ad7a33b00000000983531b908c681c40000000081feb83e98b46e3f000080bf0000000000000000000080bf0000003f5648993d0000000007c6014442c660c400000000d65be4be7320653f000080bf0000000000000000000080bf0000003f8595663f0e8737c482a8fbb80e8737c43fca283fe6feb83e3fca283ff30435bf00000000f204353f000080bf4300a03f5648993d000000003b2702c40742b238000000000000803f00000000f30435bf00000000f204353f000080bf4300a03f0ad7a33b0ac681c4000000000000000016ab5e3f4698ac3e2479b83ee2f0c3be00000000ff826c3f000080bf430000405648993d42c660c409c601440742b2b88ad6563f091fd6be3bf9b13e44eec3be000000008b836c3f000080bf430000408595663f84f01ec407c6014485f01ec422aa1f3f1c40f1be22aa1f3ff30435bf00000000f304353f000080bf4300a03f8595663f0ac601c4073670445ea024b9b402f83e1c904fbfde3da83e82a516bf19e7c4bc06e44e3f000080bf430000403333733f000000000ac68144983531b900000000000080bf00000000f40435bf00000000f204353f000080bf4300a03f07b67e3ffbbf4844af3a0a444910aeb80ea765bf41d574be4941bebe11f0c33e0000000029836cbf000080bfd42b00409ce07f3f20e36a448c7d2242000000000ea765bf41d574be4941bebe10f0c33e0000000029836cbf000080bfd42b00403b6ef83c21172644a87d22422117264444e92ebf86e183be44e92ebff304353f00000000f30435bf000080bfd82ba03f3b6ef83c9ff30d44b13a0a449df30d4444e92ebf86e183be44e92ebff304353f00000000f30435bf000080bfd82ba03f9ce07f3f20f0c037b57d224220e36a440000000092e283be7a5c77bf0000803f0000000000000000000080bf0000003f3b6ef83c00000000b13a0a44fabf48440000000092e283be7a5c77bf0000803f0000000000000000000080bf0000003f9ce07f3f221726c4a87d22422117264444e92e3f86e183be44e92ebff204353f00000000f404353f000080bf60af80be3b6ef83c9ff30dc4b13a0a449ef30d4444e92e3f86e183be44e92ebff304353f00000000f304353f000080bf60af80be9ce07f3f22e36ac48c7d2242000000000ea7653f41d574be4941bebe11f0c33e0000000029836c3f000080bf92217fbf3b6ef83cfcbf48c4af3a0a444910aeb80ea7653f41d574be4941bebe12f0c33e0000000029836c3f000080bf92217fbf9ce07f3f22e36ac48c7d2242000000000ea7653f41d574be4941be3e10f0c3be0000000029836c3f000080bfd42b00403b6ef83c211726c4707d2242211726c444e92e3f86e183be44e92e3ff20435bf00000000f304353f000080bfd82ba03f3b6ef83cfcbf48c4af3a0a444910aeb80ea7653f41d574be4941be3e10f0c3be000000002b836c3f000080bfd42b00409ce07f3f9ef30dc4ad3a0a44a0f30dc444e92e3f86e183be44e92e3ff30435bf00000000f304353f000080bfd82ba03f9ce07f3f00000000647d224220e36ac40000000092e283be7a5c773f000080bf0000000000000000000080bf0000003f3b6ef83c00000000ad3a0a44fcbf48c40000000092e283be7a5c773f000080bf0000000000000000000080bf0000003f9ce07f3f21172644707d2242211726c444e92ebf86e183be44e92e3ff20435bf00000000f40435bf000080bf60af80be3b6ef83c9ff30d44ad3a0a44a0f30dc444e92ebf86e183be44e92e3ff30435bf00000000f30435bf000080bf60af80be9ce07f3f20e36a448c7d2242000000000ea765bf41d574be4941be3e10f0c3be000000002b836cbf000080bf92217fbf3b6ef83cfbbf4844af3a0a444910aeb80ea765bf41d574be4941be3e0ff0c3be000000002b836cbf000080bf92217fbf9ce07f3fb54820440ce614445a828cb80ea765bf41d574be4941bebe12f0c33e0000000029836cbf000080bf1476bf3f9ce07f3f458a3b44b5903a43000000000ea765bf41d574be4941bebe13f0c33e0000000029836cbf000080bf1476bf3f3b6ef83c649c0444bb903a43649c044444e92ebf86e183be44e92ebff304353f00000000f30435bf000080bf8676803f3b6ef83c04ade2430de6144400ade24344e92ebf86e183be44e92ebff304353f00000000f20435bf000080bf8676803f9ce07f3f30629f37bd903a43458a3b440000000092e283be7a5c77bf0000803f0000000000000000000080bfdd41003f3b6ef83c000000000ee61444b44820440000000092e283be7a5c77bf0000803f0000000000000000000080bfdd41003f9ce07f3f659c04c4bb903a43649c044444e92e3f86e183be44e92ebff304353f00000000f204353f000080bf87c3d2ba3b6ef83c05ade2c30de6144403ade24344e92e3f86e183be44e92ebff304353f00000000f304353f000080bf87c3d2ba9ce07f3f478a3bc4b5903a43000000000ea7653f41d574be4941bebe10f0c33e0000000029836c3f000080bf8d0a00bf3b6ef83cb64820c40ce614445a828cb80ea7653f41d574be4941bebe11f0c33e0000000029836c3f000080bf8d0a00bf9ce07f3f478a3bc4b5903a43000000000ea7653f41d574be4941be3e10f0c3be0000000029836c3f000080bf1476bf3f3b6ef83c649c04c4af903a43649c04c444e92e3f86e183be44e92e3ff40435bf00000000f204353f000080bf8676803f3b6ef83cb64820c40ce614445a828cb80ea7653f41d574be4941be3e10f0c3be000000002b836c3f000080bf1476bf3f9ce07f3f02ade2c30be6144406ade2c344e92e3f86e183be44e92e3ff30435bf00000000f304353f000080bf8676803f9ce07f3f00000000ad903a43458a3bc40000000092e283be7a5c773f000080bf0000000000000000000080bfdd41003f3b6ef83c000000000be61444b64820c40000000092e283be7a5c773f000080bf0000000000000000000080bfdd41003f9ce07f3f649c0444af903a43649c04c444e92ebf86e183be44e92e3ff20435bf00000000f30435bf000080bf87c3d2ba3b6ef83c04ade2430be6144406ade2c344e92ebf86e183be44e92e3ff30435bf00000000f30435bf000080bf87c3d2ba9ce07f3f458a3b44b5903a43000000000ea765bf41d574be4941be3e0ff0c3be000000002b836cbf000080bf8d0a00bf3b6ef83cb54820440ce614445a828cb80ea765bf41d574be4941be3e0ff0c3be000000002b836cbf000080bf8d0a00bf9ce07f3f8060364462e3254430629fb80ea765bf41d574be4941bebe12f0c33e0000000029836cbf000080bfd42b00409ce07f3fd363554403254643000000000ea765bf41d574be4941bebe13f0c33e0000000029836cbf000080bfd42b00403b6ef83cb5e3164409254643b5e3164444e92ebf86e183be44e92ebff304353f00000000f30435bf000080bfd82ba03f3b6ef83cc2f5004464e32544c0f5004444e92ebf86e183be44e92ebff304353f00000000f20435bf000080bfd82ba03f9ce07f3f2829b0370c254643d36355440000000092e283be7a5c77bf0000803f0000000000000000000080bf0000003f3b6ef83c0000000064e325447f6036440000000092e283be7a5c77bf0000803f0000000000000000000080bf0000003f9ce07f3fb6e316c409254643b5e3164444e92e3f86e183be44e92ebff304353f00000000f304353f000080bf60af80be3b6ef83cc2f500c464e32544c1f5004444e92e3f86e183be44e92ebff304353f00000000f304353f000080bf60af80be9ce07f3fd56355c403254643000000000ea7653f41d574be4941bebe11f0c33e0000000029836c3f000080bf92217fbf3b6ef83c816036c462e3254430629fb80ea7653f41d574be4941bebe12f0c33e0000000029836c3f000080bf92217fbf9ce07f3fd56355c403254643000000000ea7653f41d574be4941be3e10f0c3be0000000029836c3f000080bfd42b00403b6ef83cb5e316c4fd244643b5e316c444e92e3f86e183be44e92e3ff20435bf00000000f404353f000080bfd82ba03f3b6ef83c816036c462e3254430629fb80ea7653f41d574be4941be3e10f0c3be000000002b836c3f000080bfd42b00409ce07f3fc1f500c461e32544c3f500c444e92e3f86e183be44e92e3ff30435bf00000000f304353f000080bfd82ba03f9ce07f3f00000000fa244643d36355c40000000092e283be7a5c773f000080bf0000000000000000000080bf0000003f3b6ef83c0000000060e32544816036c40000000092e283be7a5c773f000080bf0000000000000000000080bf0000003f9ce07f3fb5e31644fd244643b5e316c444e92ebf86e183be44e92e3ff20435bf00000000f40435bf000080bf60af80be3b6ef83cc2f5004461e32544c3f500c444e92ebf86e183be44e92e3ff30435bf00000000f30435bf000080bf60af80be9ce07f3fd363554403254643000000000ea765bf41d574be4941be3e10f0c3be000000002b836cbf000080bf92217fbf3b6ef83c8060364462e3254430629fb80ea765bf41d574be4941be3e0ff0c3be000000002b836cbf000080bf92217fbf9ce07f3f9750d843b4aa8c42209ea4c37277c9beb2d04f3f0cecdc3e0000803f0000000000000000000080bf4ce12d3fb5515d3eee53ca4304ee8e428fd2b6c3e184c0beb4575f3f2fda9f3e0000803f0000000000000000000080bf4ce12d3fb5515d3e38d0ba43311892408aa781c3724569be552d743fb280483e0000803f0000000000000000000080bf4ce12d3fb5515d3eaeb00044b8202242557f67c30f168abe0ce4733f50760f3e0000803f0000000000000000000080bf4ce12d3fb5515d3e79594543f298ad401c62c8c3d4fababd7585783ff138633e0000803f0000000000000000000080bf4ce12d3fb5515d3e4122a443e44c4042401dedc390b462be031c763f3285273e0000803f0000000000000000000080bf4ce12d3fb5515d3e1cf0614379ca8242272b06c4bb2686bdafd1683f183dd23e0000803f0000000000000000000080bf4ce12d3fb5515d3eb41ee543fd96e341302d3dc1632829beeb747c3fa5a468bc0000803f0000000000000000000080bf4ce12d3fb5515d3e40980a44ae4e4e4251cad2c293e465bea273793f5e7b253c0000803f0000000000000000000080bf4ce12d3fb5515d3ed75a0d4414912642dc6cd842e716153ca4397e3f8404f0bd0000803f0000000000000000000080bf4ce12d3fb5515d3e2ef9054438ef82421d016a438a1f78bedcf2743f775b24be0000803f0000000000000000000080bf4ce12d3fb5515d3e9dd7f5409496a3416c73eac3916fc5bc017e733fb8999d3e0000803f0000000000000000000080bf4ce12d3fb5515d3ef8cc424236339242fe2a0bc48b6ea3bd3eed5e3f945ff83e0000803f0000000000000000000080bf4ce12d3fb5515d3e8d428cc256146b42693b0fc416d9703d2241733f90ac9c3e0000803f0000000000000000000080bf4ce12d3fb5515d3e46b45fc3ae3a8c427259fec355d6703dfcb4523f1f9c103f0000803f0000000000000000000080bf4ce12d3fb5515d3e000000000000e4c1acc5a7361da41bbc88f67f3f0e0167bc0000803f0000000000000000000080bf4ce12d3fb5515d3ec11dc14361919a417851824300da8abee7db743fa990dcbd0000803f0000000000000000000080bf4ce12d3fb5515d3e332a65c3ab84e9c0e73ecec36d078a3d0452713f835da73e0000803f0000000000000000000080bf4ce12d3fb5515d3eb50ae543d9308f423b4da14372c9c1be5c2c603f758b99be0000803f0000000000000000000080bf4ce12d3fb5515d3e9d5eca43f7288642ce91c643e1c310bf71a44c3f2ede4fbe0000803f0000000000000000000080bf4ce12d3fb5515d3e0f0ab3c3b5a949427c3af1c36132953ef2415f3f6744c93e0000803f0000000000000000000080bf4ce12d3fb5515d3e0f0ab343dfa949427c3af143178d97be1088633fd525b3be0000803f0000000000000000000080bf4ce12d3fb5515d3e66f1c2c38945acc093436ac3dc1f903e3838733fb7d3093e0000803f0000000000000000000080bf4ce12d3fb5515d3e9d5ecac3e7288642ce91c6c3795f243f5a71383fe523863e0000803f0000000000000000000080bf4ce12d3fb5515d3eb50ae5c3cb308f423b4da1c3b851eb3e5270503f089cb53e0000803f0000000000000000000080bf4ce12d3fb5515d3e2ef905c42eef82421f016ac3f392b83e35ce673f6945653e0000803f0000000000000000000080bf4ce12d3fb5515d3e325f694342dea6c0e636d243952cffbd0bf0723f925294be0000803f0000000000000000000080bf4ce12d3fb5515d3e46b45f43c43a8c427259fe4351024dbe15fc3b3f870b26bf0000803f0000000000000000000080bf4ce12d3fb5515d3e8d428c4286146b42693b0f44c6683c3c4ef5643f4ef5e4be0000803f0000000000000000000080bf4ce12d3fb5515d3efc30e2c34209c74090b0a6405815613e08a9793f17b6c8bc0000803f0000000000000000000080bf4ce12d3fb5515d3ed75a0dc40a912642de6cd8c244842b3effe6793ff4340d3e0000803f0000000000000000000080bf4ce12d3fb5515d3e40980ac4b84e4e424fcad2424707bd3e70a46d3f4adc35bd0000803f0000000000000000000080bf4ce12d3fb5515d3eaeb000c4cc202242557f6743e84a663ea186743fa01d45be0000803f0000000000000000000080bf4ce12d3fb5515d3ea9e91dc1bb218c414762e64335d4ab3d5295753f5e098abe0000803f0000000000000000000080bf4ce12d3fb5515d3ef8cc42c24e339242fe2a0b4415afa53de54e603f9440f3be0000803f0000000000000000000080bf4ce12d3fb5515d3e1cf061c38fca8242272b064424ac4f3d8f89743f734095be0000803f0000000000000000000080bf4ce12d3fb5515d3e1599b9c3d2e06841c0856c43f8ee163ec5e0773f36a34ebe0000803f0000000000000000000080bf4ce12d3fb5515d3e9750d8c3c2aa8c42209ea443d903923eb298643f1352b2be0000803f0000000000000000000080bf4ce12d3fb5515d3eee53cac314ee8e428fd2b643ea78893e64a46f3f41a768be0000803f0000000000000000000080bf4ce12d3fb5515d3e98844ac331cfed418aafc743a1fdd43da63c7b3fcb4525be0000803f0000000000000000000080bf4ce12d3fb5515d3e4122a4c30c4d4042401ded43048ee43d3d007e3f292564bd0000803f0000000000000000000080bf4ce12d3fb5515d3e 141 | m_CompressedMesh: 142 | m_Vertices: 143 | m_NumItems: 0 144 | m_Range: 0 145 | m_Start: 0 146 | m_Data: 147 | m_BitSize: 0 148 | m_UV: 149 | m_NumItems: 0 150 | m_Range: 0 151 | m_Start: 0 152 | m_Data: 153 | m_BitSize: 0 154 | m_Normals: 155 | m_NumItems: 0 156 | m_Range: 0 157 | m_Start: 0 158 | m_Data: 159 | m_BitSize: 0 160 | m_Tangents: 161 | m_NumItems: 0 162 | m_Range: 0 163 | m_Start: 0 164 | m_Data: 165 | m_BitSize: 0 166 | m_Weights: 167 | m_NumItems: 0 168 | m_Data: 169 | m_BitSize: 0 170 | m_NormalSigns: 171 | m_NumItems: 0 172 | m_Data: 173 | m_BitSize: 0 174 | m_TangentSigns: 175 | m_NumItems: 0 176 | m_Data: 177 | m_BitSize: 0 178 | m_FloatColors: 179 | m_NumItems: 0 180 | m_Range: 0 181 | m_Start: 0 182 | m_Data: 183 | m_BitSize: 0 184 | m_BoneIndices: 185 | m_NumItems: 0 186 | m_Data: 187 | m_BitSize: 0 188 | m_Triangles: 189 | m_NumItems: 0 190 | m_Data: 191 | m_BitSize: 0 192 | m_UVInfo: 0 193 | m_LocalAABB: 194 | m_Center: {x: -0.00012207031, y: 258.78787, z: 0} 195 | m_Extent: {x: 1038.1886, y: 779.4009, z: 1038.1885} 196 | m_MeshUsageFlags: 0 197 | m_CookingOptions: 30 198 | m_BakedConvexCollisionMesh: 199 | m_BakedTriangleCollisionMesh: 200 | m_MeshMetrics[0]: 12139464 201 | m_MeshMetrics[1]: 1 202 | m_MeshOptimizationFlags: -1 203 | m_StreamData: 204 | serializedVersion: 2 205 | offset: 0 206 | size: 0 207 | path: 208 | -------------------------------------------------------------------------------- /project/Assets/Objects/Skybox/SkyboxMesh.mesh.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c0c0e69d5a5d64b0ba11fae390b1ff7f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 4300000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /project/Assets/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ace9125494e3744db882ac53861e9942 3 | folderAsset: yes 4 | timeCreated: 1529849339 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /project/Assets/Plugins/WebGL.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6b9cbe6204eac4541bafc3bfb89eac13 3 | folderAsset: yes 4 | timeCreated: 1529849345 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /project/Assets/Plugins/WebGL/ReactUnityWebGL.jslib: -------------------------------------------------------------------------------- 1 | mergeInto(LibraryManager.library, { 2 | GameOver: function (time, score) { 3 | dispatchReactUnityEvent("GameOver", time, score); 4 | }, 5 | }); 6 | -------------------------------------------------------------------------------- /project/Assets/Plugins/WebGL/ReactUnityWebGL.jslib.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ebb12bfbc842d4fc9860990d786e6372 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: 0 23 | settings: 24 | DefaultValueInitialized: true 25 | - first: 26 | Facebook: WebGL 27 | second: 28 | enabled: 1 29 | settings: {} 30 | - first: 31 | WebGL: WebGL 32 | second: 33 | enabled: 1 34 | settings: {} 35 | userData: 36 | assetBundleName: 37 | assetBundleVariant: 38 | -------------------------------------------------------------------------------- /project/Assets/Source.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db9ed8a2f798b4c83926ab23b34ace5b 3 | folderAsset: yes 4 | timeCreated: 1529849267 5 | licenseType: Pro 6 | DefaultImporter: 7 | externalObjects: {} 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /project/Assets/Source/BlinkingElementController.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | public class BlinkingElementController : MonoBehaviour { 5 | GameController gameController; 6 | Text text; 7 | float timer; 8 | 9 | void Awake () { 10 | gameController = Object.FindObjectOfType (); 11 | text = GetComponent (); 12 | } 13 | 14 | void Update () { 15 | if (gameController.isPlaying == false) { 16 | text.enabled = false; 17 | return; 18 | } 19 | timer += Time.deltaTime; 20 | if (timer > 0.5f) { 21 | timer = 0; 22 | text.enabled = !text.enabled; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /project/Assets/Source/BlinkingElementController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c9ce272a9c5174c37931d1b07fc01d43 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /project/Assets/Source/CrateController.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.InteropServices; 2 | using UnityEngine; 3 | 4 | public class CrateController : MonoBehaviour { 5 | Animator animator; 6 | AudioSource audioSource; 7 | GameController gameController; 8 | 9 | void Awake () { 10 | gameController = Object.FindObjectOfType (); 11 | animator = GetComponent (); 12 | audioSource = GetComponent (); 13 | } 14 | 15 | void OnMouseDown () { 16 | if (gameController.isPlaying == false) { 17 | return; 18 | } 19 | gameController.score += 1; 20 | animator.SetTrigger ("Clicked"); 21 | audioSource.Play (); 22 | } 23 | } -------------------------------------------------------------------------------- /project/Assets/Source/CrateController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 72aa3225590704e678075a4bfdbad752 3 | timeCreated: 1529848688 4 | licenseType: Pro 5 | MonoImporter: 6 | externalObjects: {} 7 | serializedVersion: 2 8 | defaultReferences: [] 9 | executionOrder: 0 10 | icon: {instanceID: 0} 11 | userData: 12 | assetBundleName: 13 | assetBundleVariant: 14 | -------------------------------------------------------------------------------- /project/Assets/Source/GameController.cs: -------------------------------------------------------------------------------- 1 | using System.Runtime.InteropServices; 2 | using UnityEngine; 3 | 4 | public class GameController : MonoBehaviour { 5 | public bool isPlaying { private set; get; } = false; 6 | public float time { private set; get; } 7 | public int score; 8 | 9 | [DllImport ("__Internal")] 10 | static extern void GameOver (float time, int score); 11 | 12 | 13 | void Awake () { 14 | time = 0; 15 | } 16 | 17 | void Update () { 18 | if (isPlaying == false) { 19 | return; 20 | } 21 | time -= Time.deltaTime; 22 | if (time <= 0 || score >= 25) { 23 | isPlaying = false; 24 | #if UNITY_WEBGL && !UNITY_EDITOR 25 | GameOver (time, score); 26 | #endif 27 | } 28 | } 29 | 30 | public void StartGame (int time) { 31 | this.time = time; 32 | score = 0; 33 | isPlaying = true; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /project/Assets/Source/GameController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c5f32f2e8b3854faf8e94b713affc504 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /project/Assets/Source/ScoreElementController.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | public class ScoreElementController : MonoBehaviour { 5 | GameController gameController; 6 | Text text; 7 | 8 | void Awake () { 9 | gameController = Object.FindObjectOfType (); 10 | text = GetComponent (); 11 | } 12 | 13 | void Update () { 14 | text.text = gameController.score.ToString (); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /project/Assets/Source/ScoreElementController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 721e387baafd949c981f0c32b183d4cd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /project/Assets/Source/TimeElementController.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using UnityEngine.UI; 3 | 4 | public class TimeElementController : MonoBehaviour { 5 | GameController gameController; 6 | Text text; 7 | 8 | void Awake () { 9 | gameController = Object.FindObjectOfType (); 10 | text = GetComponent (); 11 | } 12 | 13 | void Update () { 14 | var time = gameController.time > 0 ? gameController.time : 0; 15 | text.text = time.ToString ("0.00"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /project/Assets/Source/TimeElementController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fd4736d5032c9491f8857f905ead8466 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /project/Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.2d.sprite": "1.0.0", 4 | "com.unity.ide.vscode": "1.2.5", 5 | "com.unity.ugui": "1.0.0", 6 | "com.unity.modules.ai": "1.0.0", 7 | "com.unity.modules.androidjni": "1.0.0", 8 | "com.unity.modules.animation": "1.0.0", 9 | "com.unity.modules.assetbundle": "1.0.0", 10 | "com.unity.modules.audio": "1.0.0", 11 | "com.unity.modules.cloth": "1.0.0", 12 | "com.unity.modules.director": "1.0.0", 13 | "com.unity.modules.imageconversion": "1.0.0", 14 | "com.unity.modules.imgui": "1.0.0", 15 | "com.unity.modules.jsonserialize": "1.0.0", 16 | "com.unity.modules.particlesystem": "1.0.0", 17 | "com.unity.modules.physics": "1.0.0", 18 | "com.unity.modules.physics2d": "1.0.0", 19 | "com.unity.modules.screencapture": "1.0.0", 20 | "com.unity.modules.terrain": "1.0.0", 21 | "com.unity.modules.terrainphysics": "1.0.0", 22 | "com.unity.modules.tilemap": "1.0.0", 23 | "com.unity.modules.ui": "1.0.0", 24 | "com.unity.modules.uielements": "1.0.0", 25 | "com.unity.modules.umbra": "1.0.0", 26 | "com.unity.modules.unityanalytics": "1.0.0", 27 | "com.unity.modules.unitywebrequest": "1.0.0", 28 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 29 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 30 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 31 | "com.unity.modules.unitywebrequestwww": "1.0.0", 32 | "com.unity.modules.vehicles": "1.0.0", 33 | "com.unity.modules.video": "1.0.0", 34 | "com.unity.modules.vr": "1.0.0", 35 | "com.unity.modules.wind": "1.0.0", 36 | "com.unity.modules.xr": "1.0.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /project/Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.2d.sprite": { 4 | "version": "1.0.0", 5 | "depth": 0, 6 | "source": "builtin", 7 | "dependencies": {} 8 | }, 9 | "com.unity.ide.vscode": { 10 | "version": "1.2.5", 11 | "depth": 0, 12 | "source": "registry", 13 | "dependencies": {}, 14 | "url": "https://packages.unity.com" 15 | }, 16 | "com.unity.ugui": { 17 | "version": "1.0.0", 18 | "depth": 0, 19 | "source": "builtin", 20 | "dependencies": { 21 | "com.unity.modules.ui": "1.0.0", 22 | "com.unity.modules.imgui": "1.0.0" 23 | } 24 | }, 25 | "com.unity.modules.ai": { 26 | "version": "1.0.0", 27 | "depth": 0, 28 | "source": "builtin", 29 | "dependencies": {} 30 | }, 31 | "com.unity.modules.androidjni": { 32 | "version": "1.0.0", 33 | "depth": 0, 34 | "source": "builtin", 35 | "dependencies": {} 36 | }, 37 | "com.unity.modules.animation": { 38 | "version": "1.0.0", 39 | "depth": 0, 40 | "source": "builtin", 41 | "dependencies": {} 42 | }, 43 | "com.unity.modules.assetbundle": { 44 | "version": "1.0.0", 45 | "depth": 0, 46 | "source": "builtin", 47 | "dependencies": {} 48 | }, 49 | "com.unity.modules.audio": { 50 | "version": "1.0.0", 51 | "depth": 0, 52 | "source": "builtin", 53 | "dependencies": {} 54 | }, 55 | "com.unity.modules.cloth": { 56 | "version": "1.0.0", 57 | "depth": 0, 58 | "source": "builtin", 59 | "dependencies": { 60 | "com.unity.modules.physics": "1.0.0" 61 | } 62 | }, 63 | "com.unity.modules.director": { 64 | "version": "1.0.0", 65 | "depth": 0, 66 | "source": "builtin", 67 | "dependencies": { 68 | "com.unity.modules.audio": "1.0.0", 69 | "com.unity.modules.animation": "1.0.0" 70 | } 71 | }, 72 | "com.unity.modules.imageconversion": { 73 | "version": "1.0.0", 74 | "depth": 0, 75 | "source": "builtin", 76 | "dependencies": {} 77 | }, 78 | "com.unity.modules.imgui": { 79 | "version": "1.0.0", 80 | "depth": 0, 81 | "source": "builtin", 82 | "dependencies": {} 83 | }, 84 | "com.unity.modules.jsonserialize": { 85 | "version": "1.0.0", 86 | "depth": 0, 87 | "source": "builtin", 88 | "dependencies": {} 89 | }, 90 | "com.unity.modules.particlesystem": { 91 | "version": "1.0.0", 92 | "depth": 0, 93 | "source": "builtin", 94 | "dependencies": {} 95 | }, 96 | "com.unity.modules.physics": { 97 | "version": "1.0.0", 98 | "depth": 0, 99 | "source": "builtin", 100 | "dependencies": {} 101 | }, 102 | "com.unity.modules.physics2d": { 103 | "version": "1.0.0", 104 | "depth": 0, 105 | "source": "builtin", 106 | "dependencies": {} 107 | }, 108 | "com.unity.modules.screencapture": { 109 | "version": "1.0.0", 110 | "depth": 0, 111 | "source": "builtin", 112 | "dependencies": { 113 | "com.unity.modules.imageconversion": "1.0.0" 114 | } 115 | }, 116 | "com.unity.modules.subsystems": { 117 | "version": "1.0.0", 118 | "depth": 1, 119 | "source": "builtin", 120 | "dependencies": { 121 | "com.unity.modules.jsonserialize": "1.0.0" 122 | } 123 | }, 124 | "com.unity.modules.terrain": { 125 | "version": "1.0.0", 126 | "depth": 0, 127 | "source": "builtin", 128 | "dependencies": {} 129 | }, 130 | "com.unity.modules.terrainphysics": { 131 | "version": "1.0.0", 132 | "depth": 0, 133 | "source": "builtin", 134 | "dependencies": { 135 | "com.unity.modules.physics": "1.0.0", 136 | "com.unity.modules.terrain": "1.0.0" 137 | } 138 | }, 139 | "com.unity.modules.tilemap": { 140 | "version": "1.0.0", 141 | "depth": 0, 142 | "source": "builtin", 143 | "dependencies": { 144 | "com.unity.modules.physics2d": "1.0.0" 145 | } 146 | }, 147 | "com.unity.modules.ui": { 148 | "version": "1.0.0", 149 | "depth": 0, 150 | "source": "builtin", 151 | "dependencies": {} 152 | }, 153 | "com.unity.modules.uielements": { 154 | "version": "1.0.0", 155 | "depth": 0, 156 | "source": "builtin", 157 | "dependencies": { 158 | "com.unity.modules.ui": "1.0.0", 159 | "com.unity.modules.imgui": "1.0.0", 160 | "com.unity.modules.jsonserialize": "1.0.0", 161 | "com.unity.modules.uielementsnative": "1.0.0" 162 | } 163 | }, 164 | "com.unity.modules.uielementsnative": { 165 | "version": "1.0.0", 166 | "depth": 1, 167 | "source": "builtin", 168 | "dependencies": { 169 | "com.unity.modules.ui": "1.0.0", 170 | "com.unity.modules.imgui": "1.0.0", 171 | "com.unity.modules.jsonserialize": "1.0.0" 172 | } 173 | }, 174 | "com.unity.modules.umbra": { 175 | "version": "1.0.0", 176 | "depth": 0, 177 | "source": "builtin", 178 | "dependencies": {} 179 | }, 180 | "com.unity.modules.unityanalytics": { 181 | "version": "1.0.0", 182 | "depth": 0, 183 | "source": "builtin", 184 | "dependencies": { 185 | "com.unity.modules.unitywebrequest": "1.0.0", 186 | "com.unity.modules.jsonserialize": "1.0.0" 187 | } 188 | }, 189 | "com.unity.modules.unitywebrequest": { 190 | "version": "1.0.0", 191 | "depth": 0, 192 | "source": "builtin", 193 | "dependencies": {} 194 | }, 195 | "com.unity.modules.unitywebrequestassetbundle": { 196 | "version": "1.0.0", 197 | "depth": 0, 198 | "source": "builtin", 199 | "dependencies": { 200 | "com.unity.modules.assetbundle": "1.0.0", 201 | "com.unity.modules.unitywebrequest": "1.0.0" 202 | } 203 | }, 204 | "com.unity.modules.unitywebrequestaudio": { 205 | "version": "1.0.0", 206 | "depth": 0, 207 | "source": "builtin", 208 | "dependencies": { 209 | "com.unity.modules.unitywebrequest": "1.0.0", 210 | "com.unity.modules.audio": "1.0.0" 211 | } 212 | }, 213 | "com.unity.modules.unitywebrequesttexture": { 214 | "version": "1.0.0", 215 | "depth": 0, 216 | "source": "builtin", 217 | "dependencies": { 218 | "com.unity.modules.unitywebrequest": "1.0.0", 219 | "com.unity.modules.imageconversion": "1.0.0" 220 | } 221 | }, 222 | "com.unity.modules.unitywebrequestwww": { 223 | "version": "1.0.0", 224 | "depth": 0, 225 | "source": "builtin", 226 | "dependencies": { 227 | "com.unity.modules.unitywebrequest": "1.0.0", 228 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 229 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 230 | "com.unity.modules.audio": "1.0.0", 231 | "com.unity.modules.assetbundle": "1.0.0", 232 | "com.unity.modules.imageconversion": "1.0.0" 233 | } 234 | }, 235 | "com.unity.modules.vehicles": { 236 | "version": "1.0.0", 237 | "depth": 0, 238 | "source": "builtin", 239 | "dependencies": { 240 | "com.unity.modules.physics": "1.0.0" 241 | } 242 | }, 243 | "com.unity.modules.video": { 244 | "version": "1.0.0", 245 | "depth": 0, 246 | "source": "builtin", 247 | "dependencies": { 248 | "com.unity.modules.audio": "1.0.0", 249 | "com.unity.modules.ui": "1.0.0", 250 | "com.unity.modules.unitywebrequest": "1.0.0" 251 | } 252 | }, 253 | "com.unity.modules.vr": { 254 | "version": "1.0.0", 255 | "depth": 0, 256 | "source": "builtin", 257 | "dependencies": { 258 | "com.unity.modules.jsonserialize": "1.0.0", 259 | "com.unity.modules.physics": "1.0.0", 260 | "com.unity.modules.xr": "1.0.0" 261 | } 262 | }, 263 | "com.unity.modules.wind": { 264 | "version": "1.0.0", 265 | "depth": 0, 266 | "source": "builtin", 267 | "dependencies": {} 268 | }, 269 | "com.unity.modules.xr": { 270 | "version": "1.0.0", 271 | "depth": 0, 272 | "source": "builtin", 273 | "dependencies": { 274 | "com.unity.modules.physics": "1.0.0", 275 | "com.unity.modules.jsonserialize": "1.0.0", 276 | "com.unity.modules.subsystems": "1.0.0" 277 | } 278 | } 279 | } 280 | } 281 | -------------------------------------------------------------------------------- /project/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_EnableOutputSuspension: 1 16 | m_SpatializerPlugin: 17 | m_AmbisonicDecoderPlugin: 18 | m_DisableAudio: 0 19 | m_VirtualizeEffects: 1 20 | m_RequestedDSPBufferSize: 0 21 | -------------------------------------------------------------------------------- /project/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 | -------------------------------------------------------------------------------- /project/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: 13 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_DefaultMaxDepenetrationVelocity: 10 11 | m_SleepThreshold: 0.005 12 | m_DefaultContactOffset: 0.01 13 | m_DefaultSolverIterations: 6 14 | m_DefaultSolverVelocityIterations: 1 15 | m_QueriesHitBackfaces: 0 16 | m_QueriesHitTriggers: 1 17 | m_EnableAdaptiveForce: 0 18 | m_ClothInterCollisionDistance: 0.1 19 | m_ClothInterCollisionStiffness: 0.2 20 | m_ContactsGeneration: 1 21 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 22 | m_AutoSimulation: 1 23 | m_AutoSyncTransforms: 0 24 | m_ReuseCollisionCallbacks: 0 25 | m_ClothInterCollisionSettingsToggle: 0 26 | m_ClothGravity: {x: 0, y: -9.81, z: 0} 27 | m_ContactPairsMode: 0 28 | m_BroadphaseType: 0 29 | m_WorldBounds: 30 | m_Center: {x: 0, y: 0, z: 0} 31 | m_Extent: {x: 250, y: 250, z: 250} 32 | m_WorldSubdivisions: 8 33 | m_FrictionType: 0 34 | m_EnableEnhancedDeterminism: 0 35 | m_EnableUnifiedHeightmaps: 1 36 | m_ImprovedPatchFriction: 0 37 | m_SolverType: 0 38 | m_DefaultMaxAngularSpeed: 50 39 | -------------------------------------------------------------------------------- /project/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 | - enabled: 1 9 | path: Assets/MainScene.unity 10 | guid: 26854272bf1b541e8bdf25998a5b2aa8 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /project/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: 12 7 | m_SerializationMode: 2 8 | m_LineEndingsForNewScripts: 1 9 | m_DefaultBehaviorMode: 0 10 | m_PrefabRegularEnvironment: {fileID: 0} 11 | m_PrefabUIEnvironment: {fileID: 0} 12 | m_SpritePackerMode: 0 13 | m_SpritePackerCacheSize: 10 14 | m_SpritePackerPaddingPower: 1 15 | m_Bc7TextureCompressor: 0 16 | m_EtcTextureCompressorBehavior: 1 17 | m_EtcTextureFastCompressor: 1 18 | m_EtcTextureNormalCompressor: 2 19 | m_EtcTextureBestCompressor: 4 20 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp;java;cpp;c;mm;m;h 21 | m_ProjectGenerationRootNamespace: 22 | m_EnableTextureStreamingInEditMode: 1 23 | m_EnableTextureStreamingInPlayMode: 1 24 | m_EnableEditorAsyncCPUTextureLoading: 0 25 | m_AsyncShaderCompilation: 1 26 | m_PrefabModeAllowAutoSave: 1 27 | m_EnterPlayModeOptionsEnabled: 0 28 | m_EnterPlayModeOptions: 7 29 | m_GameObjectNamingDigits: 1 30 | m_GameObjectNamingScheme: 0 31 | m_AssetNamingUsesSpace: 1 32 | m_UseLegacyProbeSampleCount: 0 33 | m_SerializeInlineMappingsOnOneLine: 1 34 | m_DisableCookiesInLightmapper: 0 35 | m_AssetPipelineMode: 1 36 | m_RefreshImportMode: 0 37 | m_CacheServerMode: 0 38 | m_CacheServerEndpoint: 39 | m_CacheServerNamespacePrefix: default 40 | m_CacheServerEnableDownload: 1 41 | m_CacheServerEnableUpload: 1 42 | m_CacheServerEnableAuth: 0 43 | m_CacheServerEnableTls: 0 44 | m_CacheServerValidationMode: 2 45 | -------------------------------------------------------------------------------- /project/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: 14 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_VideoShadersIncludeMode: 2 32 | m_AlwaysIncludedShaders: 33 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 40 | m_PreloadedShaders: [] 41 | m_PreloadShadersBatchTimeLimit: -1 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} 43 | m_CustomRenderPipeline: {fileID: 0} 44 | m_TransparencySortMode: 0 45 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 46 | m_DefaultRenderingPath: 1 47 | m_DefaultMobileRenderingPath: 1 48 | m_TierSettings: [] 49 | m_LightmapStripping: 0 50 | m_FogStripping: 0 51 | m_InstancingStripping: 0 52 | m_BrgStripping: 0 53 | m_LightmapKeepPlain: 1 54 | m_LightmapKeepDirCombined: 1 55 | m_LightmapKeepDynamicPlain: 1 56 | m_LightmapKeepDynamicDirCombined: 1 57 | m_LightmapKeepShadowMask: 1 58 | m_LightmapKeepSubtractive: 1 59 | m_FogKeepLinear: 1 60 | m_FogKeepExp: 1 61 | m_FogKeepExp2: 1 62 | m_AlbedoSwatchInfos: [] 63 | m_LightsUseLinearIntensity: 0 64 | m_LightsUseColorTemperature: 0 65 | m_DefaultRenderingLayerMask: 1 66 | m_LogWhenShaderIsCompiled: 0 67 | m_SRPDefaultSettings: {} 68 | -------------------------------------------------------------------------------- /project/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 | m_UsePhysicalKeys: 1 297 | -------------------------------------------------------------------------------- /project/ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /project/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 | maxJobWorkers: 0 89 | preserveTilesOutsideBounds: 0 90 | debug: 91 | m_Flags: 0 92 | m_SettingNames: 93 | - Humanoid 94 | -------------------------------------------------------------------------------- /project/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_EnablePreReleasePackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | m_SeeAllPackageVersions: 0 20 | m_DismissPreviewPackagesInUse: 0 21 | oneTimeWarningShown: 0 22 | m_Registries: 23 | - m_Id: main 24 | m_Name: 25 | m_Url: https://packages.unity.com 26 | m_Scopes: [] 27 | m_IsDefault: 1 28 | m_Capabilities: 7 29 | m_UserSelectedRegistryName: 30 | m_UserAddingNewScopedRegistry: 0 31 | m_RegistryInfoDraft: 32 | m_Modified: 0 33 | m_ErrorMessage: 34 | m_UserModificationsInstanceId: -884 35 | m_OriginalInstanceId: -886 36 | m_LoadAssets: 0 37 | -------------------------------------------------------------------------------- /project/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: 5 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_SimulationMode: 0 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 | -------------------------------------------------------------------------------- /project/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 | -------------------------------------------------------------------------------- /project/ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2022.1.9f1 2 | m_EditorVersionWithRevision: 2022.1.9f1 (07e076b6d414) 3 | -------------------------------------------------------------------------------- /project/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 | skinWeights: 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 | customRenderPipeline: {fileID: 0} 44 | excludedTargetPlatforms: [] 45 | - serializedVersion: 2 46 | name: Low 47 | pixelLightCount: 0 48 | shadows: 0 49 | shadowResolution: 0 50 | shadowProjection: 1 51 | shadowCascades: 1 52 | shadowDistance: 20 53 | shadowNearPlaneOffset: 3 54 | shadowCascade2Split: 0.33333334 55 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 56 | shadowmaskMode: 0 57 | skinWeights: 2 58 | textureQuality: 0 59 | anisotropicTextures: 0 60 | antiAliasing: 0 61 | softParticles: 0 62 | softVegetation: 0 63 | realtimeReflectionProbes: 0 64 | billboardsFaceCameraPosition: 0 65 | vSyncCount: 0 66 | lodBias: 0.4 67 | maximumLODLevel: 0 68 | streamingMipmapsActive: 0 69 | streamingMipmapsAddAllCameras: 1 70 | streamingMipmapsMemoryBudget: 512 71 | streamingMipmapsRenderersPerFrame: 512 72 | streamingMipmapsMaxLevelReduction: 2 73 | streamingMipmapsMaxFileIORequests: 1024 74 | particleRaycastBudget: 16 75 | asyncUploadTimeSlice: 2 76 | asyncUploadBufferSize: 16 77 | asyncUploadPersistentBuffer: 1 78 | resolutionScalingFixedDPIFactor: 1 79 | customRenderPipeline: {fileID: 0} 80 | excludedTargetPlatforms: [] 81 | - serializedVersion: 2 82 | name: Medium 83 | pixelLightCount: 1 84 | shadows: 1 85 | shadowResolution: 0 86 | shadowProjection: 1 87 | shadowCascades: 1 88 | shadowDistance: 20 89 | shadowNearPlaneOffset: 3 90 | shadowCascade2Split: 0.33333334 91 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 92 | shadowmaskMode: 0 93 | skinWeights: 2 94 | textureQuality: 0 95 | anisotropicTextures: 1 96 | antiAliasing: 0 97 | softParticles: 0 98 | softVegetation: 0 99 | realtimeReflectionProbes: 0 100 | billboardsFaceCameraPosition: 0 101 | vSyncCount: 1 102 | lodBias: 0.7 103 | maximumLODLevel: 0 104 | streamingMipmapsActive: 0 105 | streamingMipmapsAddAllCameras: 1 106 | streamingMipmapsMemoryBudget: 512 107 | streamingMipmapsRenderersPerFrame: 512 108 | streamingMipmapsMaxLevelReduction: 2 109 | streamingMipmapsMaxFileIORequests: 1024 110 | particleRaycastBudget: 64 111 | asyncUploadTimeSlice: 2 112 | asyncUploadBufferSize: 16 113 | asyncUploadPersistentBuffer: 1 114 | resolutionScalingFixedDPIFactor: 1 115 | customRenderPipeline: {fileID: 0} 116 | excludedTargetPlatforms: [] 117 | - serializedVersion: 2 118 | name: High 119 | pixelLightCount: 2 120 | shadows: 2 121 | shadowResolution: 1 122 | shadowProjection: 1 123 | shadowCascades: 2 124 | shadowDistance: 40 125 | shadowNearPlaneOffset: 3 126 | shadowCascade2Split: 0.33333334 127 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 128 | shadowmaskMode: 1 129 | skinWeights: 2 130 | textureQuality: 0 131 | anisotropicTextures: 1 132 | antiAliasing: 0 133 | softParticles: 0 134 | softVegetation: 1 135 | realtimeReflectionProbes: 1 136 | billboardsFaceCameraPosition: 1 137 | vSyncCount: 1 138 | lodBias: 1 139 | maximumLODLevel: 0 140 | streamingMipmapsActive: 0 141 | streamingMipmapsAddAllCameras: 1 142 | streamingMipmapsMemoryBudget: 512 143 | streamingMipmapsRenderersPerFrame: 512 144 | streamingMipmapsMaxLevelReduction: 2 145 | streamingMipmapsMaxFileIORequests: 1024 146 | particleRaycastBudget: 256 147 | asyncUploadTimeSlice: 2 148 | asyncUploadBufferSize: 16 149 | asyncUploadPersistentBuffer: 1 150 | resolutionScalingFixedDPIFactor: 1 151 | customRenderPipeline: {fileID: 0} 152 | excludedTargetPlatforms: [] 153 | - serializedVersion: 2 154 | name: Very High 155 | pixelLightCount: 3 156 | shadows: 2 157 | shadowResolution: 2 158 | shadowProjection: 1 159 | shadowCascades: 2 160 | shadowDistance: 70 161 | shadowNearPlaneOffset: 3 162 | shadowCascade2Split: 0.33333334 163 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 164 | shadowmaskMode: 1 165 | skinWeights: 4 166 | textureQuality: 0 167 | anisotropicTextures: 2 168 | antiAliasing: 2 169 | softParticles: 1 170 | softVegetation: 1 171 | realtimeReflectionProbes: 1 172 | billboardsFaceCameraPosition: 1 173 | vSyncCount: 1 174 | lodBias: 1.5 175 | maximumLODLevel: 0 176 | streamingMipmapsActive: 0 177 | streamingMipmapsAddAllCameras: 1 178 | streamingMipmapsMemoryBudget: 512 179 | streamingMipmapsRenderersPerFrame: 512 180 | streamingMipmapsMaxLevelReduction: 2 181 | streamingMipmapsMaxFileIORequests: 1024 182 | particleRaycastBudget: 1024 183 | asyncUploadTimeSlice: 2 184 | asyncUploadBufferSize: 16 185 | asyncUploadPersistentBuffer: 1 186 | resolutionScalingFixedDPIFactor: 1 187 | customRenderPipeline: {fileID: 0} 188 | excludedTargetPlatforms: [] 189 | - serializedVersion: 2 190 | name: Ultra 191 | pixelLightCount: 4 192 | shadows: 2 193 | shadowResolution: 2 194 | shadowProjection: 1 195 | shadowCascades: 4 196 | shadowDistance: 150 197 | shadowNearPlaneOffset: 3 198 | shadowCascade2Split: 0.33333334 199 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 200 | shadowmaskMode: 1 201 | skinWeights: 255 202 | textureQuality: 0 203 | anisotropicTextures: 2 204 | antiAliasing: 2 205 | softParticles: 1 206 | softVegetation: 1 207 | realtimeReflectionProbes: 1 208 | billboardsFaceCameraPosition: 1 209 | vSyncCount: 1 210 | lodBias: 2 211 | maximumLODLevel: 0 212 | streamingMipmapsActive: 0 213 | streamingMipmapsAddAllCameras: 1 214 | streamingMipmapsMemoryBudget: 512 215 | streamingMipmapsRenderersPerFrame: 512 216 | streamingMipmapsMaxLevelReduction: 2 217 | streamingMipmapsMaxFileIORequests: 1024 218 | particleRaycastBudget: 4096 219 | asyncUploadTimeSlice: 2 220 | asyncUploadBufferSize: 16 221 | asyncUploadPersistentBuffer: 1 222 | resolutionScalingFixedDPIFactor: 1 223 | customRenderPipeline: {fileID: 0} 224 | excludedTargetPlatforms: [] 225 | m_PerPlatformDefaultQuality: 226 | Android: 2 227 | CloudRendering: 5 228 | EmbeddedLinux: 5 229 | GameCoreScarlett: 5 230 | GameCoreXboxOne: 5 231 | Lumin: 5 232 | Nintendo Switch: 5 233 | PS4: 5 234 | PS5: 5 235 | QNX: 5 236 | Server: 5 237 | Stadia: 5 238 | Standalone: 5 239 | WebGL: 3 240 | Windows Store Apps: 5 241 | XboxOne: 5 242 | iPhone: 2 243 | tvOS: 2 244 | -------------------------------------------------------------------------------- /project/ProjectSettings/SceneTemplateSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "templatePinStates": [], 3 | "dependencyTypeInfos": [ 4 | { 5 | "userAdded": false, 6 | "type": "UnityEngine.AnimationClip", 7 | "ignore": false, 8 | "defaultInstantiationMode": 0, 9 | "supportsModification": true 10 | }, 11 | { 12 | "userAdded": false, 13 | "type": "UnityEditor.Animations.AnimatorController", 14 | "ignore": false, 15 | "defaultInstantiationMode": 0, 16 | "supportsModification": true 17 | }, 18 | { 19 | "userAdded": false, 20 | "type": "UnityEngine.AnimatorOverrideController", 21 | "ignore": false, 22 | "defaultInstantiationMode": 0, 23 | "supportsModification": true 24 | }, 25 | { 26 | "userAdded": false, 27 | "type": "UnityEditor.Audio.AudioMixerController", 28 | "ignore": false, 29 | "defaultInstantiationMode": 0, 30 | "supportsModification": true 31 | }, 32 | { 33 | "userAdded": false, 34 | "type": "UnityEngine.ComputeShader", 35 | "ignore": true, 36 | "defaultInstantiationMode": 1, 37 | "supportsModification": true 38 | }, 39 | { 40 | "userAdded": false, 41 | "type": "UnityEngine.Cubemap", 42 | "ignore": false, 43 | "defaultInstantiationMode": 0, 44 | "supportsModification": true 45 | }, 46 | { 47 | "userAdded": false, 48 | "type": "UnityEngine.GameObject", 49 | "ignore": false, 50 | "defaultInstantiationMode": 0, 51 | "supportsModification": true 52 | }, 53 | { 54 | "userAdded": false, 55 | "type": "UnityEditor.LightingDataAsset", 56 | "ignore": false, 57 | "defaultInstantiationMode": 0, 58 | "supportsModification": false 59 | }, 60 | { 61 | "userAdded": false, 62 | "type": "UnityEngine.LightingSettings", 63 | "ignore": false, 64 | "defaultInstantiationMode": 0, 65 | "supportsModification": true 66 | }, 67 | { 68 | "userAdded": false, 69 | "type": "UnityEngine.Material", 70 | "ignore": false, 71 | "defaultInstantiationMode": 0, 72 | "supportsModification": true 73 | }, 74 | { 75 | "userAdded": false, 76 | "type": "UnityEditor.MonoScript", 77 | "ignore": true, 78 | "defaultInstantiationMode": 1, 79 | "supportsModification": true 80 | }, 81 | { 82 | "userAdded": false, 83 | "type": "UnityEngine.PhysicMaterial", 84 | "ignore": false, 85 | "defaultInstantiationMode": 0, 86 | "supportsModification": true 87 | }, 88 | { 89 | "userAdded": false, 90 | "type": "UnityEngine.PhysicsMaterial2D", 91 | "ignore": false, 92 | "defaultInstantiationMode": 0, 93 | "supportsModification": true 94 | }, 95 | { 96 | "userAdded": false, 97 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", 98 | "ignore": false, 99 | "defaultInstantiationMode": 0, 100 | "supportsModification": true 101 | }, 102 | { 103 | "userAdded": false, 104 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", 105 | "ignore": false, 106 | "defaultInstantiationMode": 0, 107 | "supportsModification": true 108 | }, 109 | { 110 | "userAdded": false, 111 | "type": "UnityEngine.Rendering.VolumeProfile", 112 | "ignore": false, 113 | "defaultInstantiationMode": 0, 114 | "supportsModification": true 115 | }, 116 | { 117 | "userAdded": false, 118 | "type": "UnityEditor.SceneAsset", 119 | "ignore": false, 120 | "defaultInstantiationMode": 0, 121 | "supportsModification": false 122 | }, 123 | { 124 | "userAdded": false, 125 | "type": "UnityEngine.Shader", 126 | "ignore": true, 127 | "defaultInstantiationMode": 1, 128 | "supportsModification": true 129 | }, 130 | { 131 | "userAdded": false, 132 | "type": "UnityEngine.ShaderVariantCollection", 133 | "ignore": true, 134 | "defaultInstantiationMode": 1, 135 | "supportsModification": true 136 | }, 137 | { 138 | "userAdded": false, 139 | "type": "UnityEngine.Texture", 140 | "ignore": false, 141 | "defaultInstantiationMode": 0, 142 | "supportsModification": true 143 | }, 144 | { 145 | "userAdded": false, 146 | "type": "UnityEngine.Texture2D", 147 | "ignore": false, 148 | "defaultInstantiationMode": 0, 149 | "supportsModification": true 150 | }, 151 | { 152 | "userAdded": false, 153 | "type": "UnityEngine.Timeline.TimelineAsset", 154 | "ignore": false, 155 | "defaultInstantiationMode": 0, 156 | "supportsModification": true 157 | } 158 | ], 159 | "defaultDependencyTypeInfo": { 160 | "userAdded": false, 161 | "type": "", 162 | "ignore": false, 163 | "defaultInstantiationMode": 1, 164 | "supportsModification": true 165 | }, 166 | "newSceneOverride": 0 167 | } -------------------------------------------------------------------------------- /project/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 | -------------------------------------------------------------------------------- /project/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 | -------------------------------------------------------------------------------- /project/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_DashboardUrl: https://dashboard.unity3d.com 13 | m_TestInitMode: 0 14 | CrashReportingSettings: 15 | m_EventUrl: https://perf-events.cloud.unity3d.com 16 | m_Enabled: 0 17 | m_LogBufferSize: 10 18 | m_CaptureEditorExceptions: 1 19 | UnityPurchasingSettings: 20 | m_Enabled: 0 21 | m_TestMode: 0 22 | UnityAnalyticsSettings: 23 | m_Enabled: 0 24 | m_TestMode: 0 25 | m_InitializeOnStartup: 1 26 | UnityAdsSettings: 27 | m_Enabled: 0 28 | m_InitializeOnStartup: 1 29 | m_TestMode: 0 30 | m_IosGameId: 31 | m_AndroidGameId: 32 | m_GameIds: {} 33 | m_GameId: 34 | PerformanceReportingSettings: 35 | m_Enabled: 0 36 | -------------------------------------------------------------------------------- /project/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 | m_MaxScrubTime: 30 14 | m_CompiledVersion: 0 15 | m_RuntimeVersion: 0 16 | m_RuntimeResources: {fileID: 0} 17 | -------------------------------------------------------------------------------- /project/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 | -------------------------------------------------------------------------------- /project/UserSettings/EditorUserSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!162 &1 4 | EditorUserSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_ConfigSettings: 8 | RecentlyUsedSceneGuid-0: 9 | value: 51070c5351075e090f085d2045770e154e151c2c7e7d7f6975284831b0e13560 10 | flags: 0 11 | lightmappingDeviceAndPlatform: 12 | value: 53 13 | flags: 0 14 | vcSharedLogLevel: 15 | value: 0d5e400f0650 16 | flags: 0 17 | m_VCAutomaticAdd: 1 18 | m_VCDebugCom: 0 19 | m_VCDebugCmd: 0 20 | m_VCDebugOut: 0 21 | m_SemanticMergeMode: 2 22 | m_DesiredImportWorkerCount: 2 23 | m_StandbyImportWorkerCount: 2 24 | m_IdleImportWorkerShutdownDelay: 60000 25 | m_VCShowFailedCheckout: 1 26 | m_VCOverwriteFailedCheckoutAssets: 1 27 | m_VCProjectOverlayIcons: 1 28 | m_VCHierarchyOverlayIcons: 1 29 | m_VCOtherOverlayIcons: 1 30 | m_VCAllowAsyncUpdate: 0 31 | m_ArtifactGarbageCollection: 1 32 | -------------------------------------------------------------------------------- /project/omnisharp.json: -------------------------------------------------------------------------------- 1 | { 2 | "FormattingOptions": { 3 | "NewLine": "\n", 4 | "UseTabs": false, 5 | "TabSize": 2, 6 | "IndentationSize": 2, 7 | "SpacingAfterMethodDeclarationName": true, 8 | "SpaceWithinMethodDeclarationParenthesis": false, 9 | "SpaceBetweenEmptyMethodDeclarationParentheses": false, 10 | "SpaceAfterMethodCallName": true, 11 | "SpaceWithinMethodCallParentheses": false, 12 | "SpaceBetweenEmptyMethodCallParentheses": false, 13 | "SpaceAfterControlFlowStatementKeyword": true, 14 | "SpaceWithinExpressionParentheses": false, 15 | "SpaceWithinCastParentheses": false, 16 | "SpaceWithinOtherParentheses": false, 17 | "SpaceAfterCast": false, 18 | "SpacesIgnoreAroundVariableDeclaration": false, 19 | "SpaceBeforeOpenSquareBracket": false, 20 | "SpaceBetweenEmptySquareBrackets": false, 21 | "SpaceWithinSquareBrackets": false, 22 | "SpaceAfterColonInBaseTypeDeclaration": true, 23 | "SpaceAfterComma": true, 24 | "SpaceAfterDot": false, 25 | "SpaceAfterSemicolonsInForStatement": true, 26 | "SpaceBeforeColonInBaseTypeDeclaration": true, 27 | "SpaceBeforeComma": false, 28 | "SpaceBeforeDot": false, 29 | "SpaceBeforeSemicolonsInForStatement": false, 30 | "SpacingAroundBinaryOperator": "single", 31 | "IndentBraces": false, 32 | "IndentBlock": true, 33 | "IndentSwitchSection": true, 34 | "IndentSwitchCaseSection": true, 35 | "LabelPositioning": "oneLess", 36 | "WrappingPreserveSingleLine": true, 37 | "WrappingKeepStatementsOnSingleLine": true, 38 | "NewLinesForBracesInTypes": false, 39 | "NewLinesForBracesInMethods": false, 40 | "NewLinesForBracesInProperties": false, 41 | "NewLinesForBracesInAccessors": false, 42 | "NewLinesForBracesInAnonymousMethods": false, 43 | "NewLinesForBracesInControlBlocks": false, 44 | "NewLinesForBracesInAnonymousTypes": false, 45 | "NewLinesForBracesInObjectCollectionArrayInitializers": false, 46 | "NewLinesForBracesInLambdaExpressionBody": false, 47 | "NewLineForElse": false, 48 | "NewLineForCatch": false, 49 | "NewLineForFinally": false, 50 | "NewLineForMembersInObjectInit": false, 51 | "NewLineForMembersInAnonymousTypes": false, 52 | "NewLineForClausesInQuery": false 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | React Unity WebGL Template 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /public/unitybuild/crateclicker.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeffreylanters/react-unity-webgl-template/d54b8bbe2cd05a704f7f6eb7a87fed938b9d71b1/public/unitybuild/crateclicker.data -------------------------------------------------------------------------------- /public/unitybuild/crateclicker.loader.js: -------------------------------------------------------------------------------- 1 | function createUnityInstance(e,t,n){function r(e,n){if(!r.aborted&&t.showBanner)return"error"==n&&(r.aborted=!0),t.showBanner(e,n);switch(n){case"error":console.error(e);break;case"warning":console.warn(e);break;default:console.log(e)}}function o(e){var t=e.reason||e.error,n=t?t.toString():e.message||e.reason||"",r=t&&t.stack?t.stack.toString():"";if(r.startsWith(n)&&(r=r.substring(n.length)),n+="\n"+r.trim(),n&&l.stackTraceRegExp&&l.stackTraceRegExp.test(n)){var o=e.filename||t&&(t.fileName||t.sourceURL)||"",a=e.lineno||t&&(t.lineNumber||t.line)||0;i(n,o,a)}}function a(e){e.preventDefault()}function i(e,t,n){if(e.indexOf("fullscreen error")==-1){if(l.startupErrorHandler)return void l.startupErrorHandler(e,t,n);if(!(l.errorHandler&&l.errorHandler(e,t,n)||(console.log("Invoking error handler due to\n"+e),"function"==typeof dump&&dump("Invoking error handler due to\n"+e),i.didShowErrorMessage))){var e="An error occurred running the Unity content on this page. See your browser JavaScript console for more info. The error was:\n"+e;e.indexOf("DISABLE_EXCEPTION_CATCHING")!=-1?e="An exception has occurred, but exception handling has been disabled in this build. If you are the developer of this content, enable exceptions in your project WebGL player settings to be able to catch the exception or see the stack trace.":e.indexOf("Cannot enlarge memory arrays")!=-1?e="Out of memory. If you are the developer of this content, try allocating more memory to your WebGL build in the WebGL player settings.":e.indexOf("Invalid array buffer length")==-1&&e.indexOf("Invalid typed array length")==-1&&e.indexOf("out of memory")==-1&&e.indexOf("could not allocate memory")==-1||(e="The browser could not allocate enough memory for the WebGL content. If you are the developer of this content, try allocating less memory to your WebGL build in the WebGL player settings."),alert(e),i.didShowErrorMessage=!0}}}function s(e,t){if("symbolsUrl"!=e){var r=l.downloadProgress[e];r||(r=l.downloadProgress[e]={started:!1,finished:!1,lengthComputable:!1,total:0,loaded:0}),"object"!=typeof t||"progress"!=t.type&&"load"!=t.type||(r.started||(r.started=!0,r.lengthComputable=t.lengthComputable),r.total=t.total,r.loaded=t.loaded,"load"==t.type&&(r.finished=!0));var o=0,a=0,i=0,s=0,u=0;for(var e in l.downloadProgress){var r=l.downloadProgress[e];if(!r.started)return 0;i++,r.lengthComputable?(o+=r.loaded,a+=r.total,s++):r.finished||u++}var c=i?(i-u-(a?s*(a-o)/a:0))/i:0;n(.9*c)}}function u(e){s(e);var t=l.cacheControl(l[e]),n=l.companyName&&l.productName?l.cachedFetch:l.fetchWithProgress,o=l[e],a=/file:\/\//.exec(o)?"same-origin":void 0,i=n(l[e],{method:"GET",companyName:l.companyName,productName:l.productName,productVersion:l.productVersion,control:t,mode:a,onProgress:function(t){s(e,t)}});return i.then(function(e){return e.parsedBody}).catch(function(t){var n="Failed to download file "+l[e];"file:"==location.protocol?r(n+". Loading web pages via a file:// URL without a web server is not supported by this browser. Please use a local development web server to host Unity content, or use the Unity Build and Run option.","error"):console.error(n)})}function c(){return new Promise(function(e,t){var n=document.createElement("script");n.src=l.frameworkUrl,n.onload=function(){if("undefined"==typeof unityFramework||!unityFramework){var t=[["br","br"],["gz","gzip"]];for(var o in t){var a=t[o];if(l.frameworkUrl.endsWith("."+a[0])){var i="Unable to parse "+l.frameworkUrl+"!";if("file:"==location.protocol)return void r(i+" Loading pre-compressed (brotli or gzip) content via a file:// URL without a web server is not supported by this browser. Please use a local development web server to host compressed Unity content, or use the Unity Build and Run option.","error");if(i+=' This can happen if build compression was enabled but web server hosting the content was misconfigured to not serve the file with HTTP Response Header "Content-Encoding: '+a[1]+'" present. Check browser Console and Devtools Network tab to debug.',"br"==a[0]&&"http:"==location.protocol){var s=["localhost","127.0.0.1"].indexOf(location.hostname)!=-1?"":"Migrate your server to use HTTPS.";i=/Firefox/.test(navigator.userAgent)?"Unable to parse "+l.frameworkUrl+'!
If using custom web server, verify that web server is sending .br files with HTTP Response Header "Content-Encoding: br". Brotli compression may not be supported in Firefox over HTTP connections. '+s+' See https://bugzilla.mozilla.org/show_bug.cgi?id=1670675 for more information.':"Unable to parse "+l.frameworkUrl+'!
If using custom web server, verify that web server is sending .br files with HTTP Response Header "Content-Encoding: br". Brotli compression may not be supported over HTTP connections. Migrate your server to use HTTPS.'}return void r(i,"error")}}r("Unable to parse "+l.frameworkUrl+"! The file is corrupt, or compression was misconfigured? (check Content-Encoding HTTP Response Header on web server)","error")}var u=unityFramework;unityFramework=null,n.onload=null,e(u)},n.onerror=function(e){r("Unable to load file "+l.frameworkUrl+"! Check that the file exists on the remote server. (also check browser Console and Devtools Network tab to debug)","error")},document.body.appendChild(n),l.deinitializers.push(function(){document.body.removeChild(n)})})}function d(){c().then(function(e){e(l)});var e=u("dataUrl");l.preRun.push(function(){l.addRunDependency("dataUrl"),e.then(function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=0,r="UnityWebData1.0\0";if(!String.fromCharCode.apply(null,e.subarray(n,n+r.length))==r)throw"unknown data format";n+=r.length;var o=t.getUint32(n,!0);for(n+=4;n0;c=d,d=u.indexOf("/",c)+1)l.FS_createPath(u.substring(0,c),u.substring(c,d-1),!0,!0);l.FS_createDataFile(u,null,e.subarray(a,a+i),!0,!0,!0)}l.removeRunDependency("dataUrl")})})}n=n||function(){};var l={canvas:e,webglContextAttributes:{preserveDrawingBuffer:!1},cacheControl:function(e){return e==l.dataUrl||e.match(/\.bundle/)?"must-revalidate":"no-store"},streamingAssetsUrl:"StreamingAssets",downloadProgress:{},deinitializers:[],intervals:{},setInterval:function(e,t){var n=window.setInterval(e,t);return this.intervals[n]=!0,n},clearInterval:function(e){delete this.intervals[e],window.clearInterval(e)},preRun:[],postRun:[],print:function(e){console.log(e)},printErr:function(e){console.error(e),"string"==typeof e&&e.indexOf("wasm streaming compile failed")!=-1&&(e.toLowerCase().indexOf("mime")!=-1?r('HTTP Response Header "Content-Type" configured incorrectly on the server for file '+l.codeUrl+' , should be "application/wasm". Startup time performance will suffer.',"warning"):r('WebAssembly streaming compilation failed! This can happen for example if "Content-Encoding" HTTP header is incorrectly enabled on the server for file '+l.codeUrl+", but the file is not pre-compressed on disk (or vice versa). Check the Network tab in browser Devtools to debug server header configuration.","warning"))},locateFile:function(e){return"build.wasm"==e?this.codeUrl:e},disabledCanvasEvents:["contextmenu","dragstart"]};for(var h in t)l[h]=t[h];l.streamingAssetsUrl=new URL(l.streamingAssetsUrl,document.URL).href;var f=l.disabledCanvasEvents.slice();f.forEach(function(t){e.addEventListener(t,a)}),window.addEventListener("error",o),window.addEventListener("unhandledrejection",o);var p="",m="";document.addEventListener("webkitfullscreenchange",function(t){var n=document.webkitCurrentFullScreenElement;n===e?e.style.width&&(p=e.style.width,m=e.style.height,e.style.width="100%",e.style.height="100%"):p&&(e.style.width=p,e.style.height=m,p="",m="")}),l.deinitializers.push(function(){l.disableAccessToMediaDevices(),f.forEach(function(t){e.removeEventListener(t,a)}),window.removeEventListener("error",o),window.removeEventListener("unhandledrejection",o);for(var t in l.intervals)window.clearInterval(t);l.intervals={}}),l.QuitCleanup=function(){for(var e=0;e1?"\nUpgrade to iOS 15 or later.":"\nUpgrade to Safari 15 or later."),t(r)}else l.SystemInfo.hasWasm?(l.startupErrorHandler=t,n(0),l.postRun.push(function(){n(1),delete l.startupErrorHandler,e(g)}),d()):t("Your browser does not support WebAssembly.");else t("Your browser does not support WebGL.")})} -------------------------------------------------------------------------------- /public/unitybuild/crateclicker.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeffreylanters/react-unity-webgl-template/d54b8bbe2cd05a704f7f6eb7a87fed938b9d71b1/public/unitybuild/crateclicker.wasm -------------------------------------------------------------------------------- /src/app.component.tsx: -------------------------------------------------------------------------------- 1 | import { useCallback, useEffect, useState } from "react"; 2 | import { Unity, useUnityContext } from "react-unity-webgl"; 3 | import styles from "./app.module.css"; 4 | 5 | const App = () => { 6 | const { 7 | unityProvider, 8 | isLoaded, 9 | loadingProgression, 10 | sendMessage, 11 | addEventListener, 12 | removeEventListener, 13 | requestFullscreen, 14 | takeScreenshot, 15 | unload, 16 | } = useUnityContext({ 17 | loaderUrl: "/unitybuild/crateclicker.loader.js", 18 | dataUrl: "/unitybuild/crateclicker.data", 19 | frameworkUrl: "/unitybuild/crateclicker.framework.js", 20 | codeUrl: "/unitybuild/crateclicker.wasm", 21 | webglContextAttributes: { 22 | preserveDrawingBuffer: true, 23 | }, 24 | }); 25 | 26 | const [isPlaying, setIsPlaying] = useState(false); 27 | const [screenshotDatas, setScreenshotDatas] = useState([]); 28 | const [scores, setScores] = useState<[number, number][]>([]); 29 | 30 | const handleClickStartGame = (time: number) => { 31 | if (isLoaded === false || isPlaying === true) { 32 | return; 33 | } 34 | setIsPlaying(true); 35 | sendMessage("GameController", "StartGame", time); 36 | }; 37 | 38 | const handleClickFullscreen = () => { 39 | if (isLoaded === false) { 40 | return; 41 | } 42 | requestFullscreen(true); 43 | }; 44 | 45 | const handleClickScreenshot = () => { 46 | if (isLoaded === false) { 47 | return; 48 | } 49 | const screenshotData = takeScreenshot(); 50 | if (screenshotData !== undefined) { 51 | setScreenshotDatas([screenshotData, ...screenshotDatas]); 52 | } 53 | }; 54 | 55 | const handleClickUnload = async () => { 56 | if (isLoaded === false) { 57 | return; 58 | } 59 | try { 60 | await unload(); 61 | console.log("Unload success"); 62 | } catch (error) { 63 | console.error(`Unable to unload: ${error}`); 64 | } 65 | }; 66 | 67 | const handleGameOver = useCallback( 68 | (time: number, score: number) => { 69 | time = Math.round(time); 70 | setIsPlaying(false); 71 | setScores([[time, score], ...scores]); 72 | }, 73 | [scores] 74 | ); 75 | 76 | useEffect(() => { 77 | addEventListener("GameOver", handleGameOver); 78 | return () => { 79 | removeEventListener("GameOver", handleGameOver); 80 | }; 81 | }, [handleGameOver, addEventListener, removeEventListener]); 82 | 83 | return ( 84 |
85 |

Crate Clicker!

86 |
87 | {isLoaded === false && ( 88 |
89 |
93 |
94 | )} 95 | 99 |
100 |
101 | 104 | 107 | 108 | 109 | 110 |
111 |

Scores

112 |
    113 | {scores.map(([time, score]) => ( 114 |
  • 115 | {score} points with {time} seconds left! 116 |
  • 117 | ))} 118 |
119 |

Screenshots

120 |
121 | {screenshotDatas.map((data, index) => ( 122 | Screenshot 123 | ))} 124 |
125 |
126 | ); 127 | }; 128 | 129 | export { App }; 130 | -------------------------------------------------------------------------------- /src/app.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | display: flex; 3 | flex-direction: column; 4 | align-items: center; 5 | gap: 40px; 6 | } 7 | 8 | .container .unityWrapper { 9 | background: #cecece; 10 | width: 800px; 11 | height: 400px; 12 | display: flex; 13 | align-items: center; 14 | justify-content: center; 15 | } 16 | 17 | .container .unityWrapper .loadingBar { 18 | background: #8c8c8c; 19 | width: 400px; 20 | height: 10px; 21 | border-radius: 5px; 22 | overflow: hidden; 23 | } 24 | 25 | .container .unityWrapper .loadingBar .loadingBarFill { 26 | height: 6px; 27 | border-radius: 5px; 28 | margin: 2px; 29 | background: #ffffff; 30 | transition: 0.3s width ease-out; 31 | } 32 | 33 | .container .unityWrapper canvas { 34 | width: 100%; 35 | height: 100%; 36 | } 37 | 38 | .container .screenshots { 39 | display: grid; 40 | gap: 20px; 41 | grid-template-columns: repeat(3, 1fr); 42 | } 43 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { createRoot } from "react-dom/client"; 2 | import { createElement } from "react"; 3 | import { App } from "./app.component"; 4 | import "./styles.css"; 5 | 6 | const element = document.getElementById("root")!; 7 | const root = createRoot(element); 8 | 9 | root.render(createElement(App)); 10 | -------------------------------------------------------------------------------- /src/react-app-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #ffffff; 3 | margin: 40px; 4 | } 5 | 6 | body * { 7 | margin: 0; 8 | font-family: Arial, Helvetica, sans-serif; 9 | } 10 | 11 | body button { 12 | background-color: #ffffff; 13 | border: 1px solid #cccccc; 14 | border-radius: 5px; 15 | padding: 10px; 16 | margin: 10px; 17 | cursor: pointer; 18 | } 19 | body button:hover { 20 | background-color: #cccccc; 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": [ 5 | "dom", 6 | "dom.iterable", 7 | "esnext" 8 | ], 9 | "allowJs": true, 10 | "skipLibCheck": true, 11 | "esModuleInterop": true, 12 | "allowSyntheticDefaultImports": true, 13 | "strict": true, 14 | "forceConsistentCasingInFileNames": true, 15 | "noFallthroughCasesInSwitch": true, 16 | "module": "esnext", 17 | "moduleResolution": "node", 18 | "resolveJsonModule": true, 19 | "isolatedModules": true, 20 | "noEmit": true, 21 | "jsx": "react-jsx" 22 | }, 23 | "include": [ 24 | "src" 25 | ] 26 | } 27 | --------------------------------------------------------------------------------