diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 620e8c05ce..905922d636 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -2,15 +2,10 @@
# Order is important; the last matching pattern takes the most precedence.
* @Unity-Technologies/multiplayer-sdk
-Profiling/ @Unity-Technologies/multiplayer-tools
-Metrics/ @Unity-Technologies/multiplayer-tools
-/com.unity.netcode.gameobjects/Runtime/Transports/ @Unity-Technologies/multiplayer-workflows
-/com.unity.netcode.gameobjects/Tests/Editor/Transports/ @Unity-Technologies/multiplayer-workflows
-/com.unity.netcode.gameobjects/Tests/Runtime/Transports/ @Unity-Technologies/multiplayer-workflows
-*.asmdef @chrispope @miniwolf @NoelStephensUnity @fluong6
-package.json @chrispope @miniwolf @NoelStephensUnity @fluong6
-AssemblyInfo.cs @chrispope @miniwolf @NoelStephensUnity @fluong6
-.editorconfig @chrispope @miniwolf @NoelStephensUnity @fluong6
-.gitignore @chrispope @miniwolf @NoelStephensUnity @fluong6
-.github/ @chrispope @miniwolf @NoelStephensUnity @fluong6
-.yamato/ @chrispope @miniwolf @NoelStephensUnity @fluong6
+*.asmdef @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
+package.json @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
+AssemblyInfo.cs @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
+.editorconfig @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
+.gitignore @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
+.github/ @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
+.yamato/ @NoelStephensUnity @EmandM @Unity-Technologies/netcode-qa
diff --git a/.github/ISSUE_TEMPLATE/support.md b/.github/ISSUE_TEMPLATE/support.md
index 0033a651de..2383875723 100644
--- a/.github/ISSUE_TEMPLATE/support.md
+++ b/.github/ISSUE_TEMPLATE/support.md
@@ -7,6 +7,7 @@ assignees: ''
---
-Post your questions or problems here.
+For support related questions we HIGHLY recommend to post a message either on the [Unity Discussions](https://discussions.unity.com/tag/netcode-for-gameobjects) or on our [Discord Community](https://discord.gg/TqNeJTtC) where you can get help from the community and the developers.
+Those forums will get you the fastest response and are the best place to ask for help.
-For general questions, networking advice or discussions about the Netcode for GameObjects, you can also reach us on our [Discord Community](https://discord.gg/FM8SE9E) or create a post in the [Unity Multiplayer Forum](https://forum.unity.com/forums/multiplayer.26/).
+If you still feel like you want to open a support issue as an GitHub Issue, please make sure to include as much information as possible (also including any relevant code/project) to help us understand your problem.
\ No newline at end of file
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index efe4270525..bdf3f3801f 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -2,8 +2,6 @@
-
-
## Changelog
- Added: The package whose Changelog should be added to should be in the header. Delete the changelog section entirely if it's not needed.
@@ -26,3 +24,13 @@
- [ ] Deprecation of the API is explained in the CHANGELOG.
- [ ] The users can understand why this API was removed and what they should use instead.
-->
+
+## Backport
+
+
\ No newline at end of file
diff --git a/.github/renovate.json5 b/.github/renovate.json5
new file mode 100644
index 0000000000..1b96abd02f
--- /dev/null
+++ b/.github/renovate.json5
@@ -0,0 +1,37 @@
+{
+ "baseBranches": ["develop", "develop-2.0.0"],
+ "dependencyDashboard": true,
+
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
+ "extends": [
+ "local>Unity-Technologies/unity-renovate-config"
+ ],
+ "prConcurrentLimit": 100,
+ // Ignore commits produced by GitHub actions workflows
+ "gitIgnoredAuthors": ["githubaction@githubaction.com"],
+ "ignorePaths": [
+ "**/node_modules/**",
+ // Don't renovate files in special folders using ~ as suffix
+ "**/*~/**",
+ "com.unity.netcode.gameobjects/**/*",
+ "Examples/**/*",
+ "testproject/**/*",
+ "minimalproject/**/*",
+ "testproject-tools-integration/**/*"
+ ],
+ "packageRules": [
+ // Run unity-upm-project and unity-upm-package only on weekends to reduce PR noise
+ // Also ensure dependencies won't be downgraded when they don't exist in the public repositories
+ {
+ "matchManagers": [
+ "unity-upm-project",
+ "unity-upm-package"
+ ],
+ "enabled": "true",
+ "schedule": [
+ "every weekend"
+ ],
+ "rollbackPrs": false,
+ }
+ ],
+}
diff --git a/.github/workflows/assignee-management.yaml b/.github/workflows/assignee-management.yaml
new file mode 100644
index 0000000000..b330a01191
--- /dev/null
+++ b/.github/workflows/assignee-management.yaml
@@ -0,0 +1,70 @@
+# This workflow manages issue assignments and related label changes:
+# 1. When someone is assigned to an issue:
+# - Removes "stat:awaiting-triage" label
+# - Adds "stat:Investigating" label
+# 2. When all assignees are removed from an issue:
+# - Adds "stat:awaiting-triage" label
+# - Removes "stat:Investigating" label
+# 3. When "stat:Investigating" label is added:
+# - Automatically assigns the issue to the person who added the label
+
+name: Handle Issue Assignment and Labels
+
+on:
+ issues:
+ types: [assigned, unassigned, labeled]
+
+env:
+ AWAITING-TRIAGE_LABEL: stat:awaiting-triage
+ INVESTIGATING_LABEL: stat:Investigating
+
+jobs:
+ handle_assignment:
+ name: Handle Issue Assignment Changes
+ if: ${{ !github.event.issue.pull_request && github.event.issue.state == 'open' }}
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+
+ steps:
+ - name: Handle Assignment Changes
+ run: |
+ if [[ "${{ github.event.action }}" == "assigned" ]]; then
+ # Someone was assigned - remove awaiting-triage, add investigating
+ echo "ADD=${{ env.INVESTIGATING_LABEL }}" >> $GITHUB_ENV
+ echo "REMOVE=${{ env.AWAITING-TRIAGE_LABEL }}" >> $GITHUB_ENV
+ elif [[ "${{ github.event.action }}" == "unassigned" ]]; then
+ # Check if there are any remaining assignees
+ ASSIGNEES=$(echo '${{ toJson(github.event.issue.assignees) }}' | jq length)
+ if [[ "$ASSIGNEES" == "0" ]]; then
+ # No assignees left - add awaiting-triage, remove investigating
+ echo "ADD=${{ env.AWAITING-TRIAGE_LABEL }}" >> $GITHUB_ENV
+ echo "REMOVE=${{ env.INVESTIGATING_LABEL }}" >> $GITHUB_ENV
+ fi
+ fi
+
+ - name: Update Labels
+ if: env.ADD != '' || env.REMOVE != ''
+ run: gh issue edit "$NUMBER" --add-label "$ADD" --remove-label "$REMOVE"
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_REPO: ${{ github.repository }}
+ NUMBER: ${{ github.event.issue.number }}
+
+ handle_investigating_label:
+ name: Handle Investigating Label Addition
+ if: ${{ github.event.action == 'labeled' && github.event.label.name == 'stat:Investigating' && !github.event.issue.pull_request && github.event.issue.state == 'open' }}
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+
+ steps:
+ - name: Assign Issue to person that added Investigating Label
+ run: |
+ # Assign the issue to the person who added the label
+ gh issue edit "$NUMBER" --add-assignee "$ACTOR"
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_REPO: ${{ github.repository }}
+ NUMBER: ${{ github.event.issue.number }}
+ ACTOR: ${{ github.actor }}
diff --git a/.github/workflows/backport-verification.yml b/.github/workflows/backport-verification.yml
new file mode 100644
index 0000000000..4e82b13af6
--- /dev/null
+++ b/.github/workflows/backport-verification.yml
@@ -0,0 +1,32 @@
+# This workflow is designed to verify that the pull request description contains a "## Backport" section, which is important as a reminder to account for backports for anyone that works with NGO repository.
+# We have 2 development branches (develop and develop-2.0.0) and we need to ensure that relevant changes are landing in only one or both of them
+# If the "##Backport" section is missing, the workflow will fail and block the PR from merging, prompting the developer to add this section.
+
+# The workflow is configured to run when PR is created as well as when it is edited which also counts simple description edits.
+
+name: "NGO - Backport Verification"
+
+on:
+ pull_request:
+ types: [opened, edited, synchronize, reopened]
+ branches:
+ - develop
+ - develop-2.0.0
+
+jobs:
+ backport-verification:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+
+ - name: Check PR description
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const pr = context.payload.pull_request;
+ const body = pr.body || '';
+
+ if (!body.includes('## Backport')) {
+ core.setFailed('PR description must include a "## Backport" section. Please add this section and provide information about this PR backport to develop or develop-2.0.0 branch respectively or explain why backport is not needed.');
+ }
\ No newline at end of file
diff --git a/.github/workflows/conventional-pr.yml b/.github/workflows/conventional-pr.yml
index ec3a6512e3..8e783eec55 100644
--- a/.github/workflows/conventional-pr.yml
+++ b/.github/workflows/conventional-pr.yml
@@ -1,6 +1,6 @@
name: Conventional PR
-# Controls when the action will run.
+# Controls when the action will run.
on:
pull_request:
branches:
@@ -17,7 +17,7 @@ jobs:
steps:
- name: semantic-pull-request
# Internal Unity mirror available at jesseo/action-semantic-pull-request, but actions from private repos aren't supported, so continue to use the public one below
- uses: amannn/action-semantic-pull-request@b7a9a97cb10fa6e1ae02647e718798175f6b1f1d
+ uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
@@ -34,4 +34,4 @@ jobs:
# For work-in-progress PRs you can typically use draft pull requests from Github. However, private repositories on the free plan don't have this option and therefore this action allows you to opt-in to using the special '[WIP]' prefix to indicate this state. This will avoid the validation of the PR title and the pull request checks remain pending. Note that a second check will be reported if this is enabled.
#wip: # optional
# When using "Squash and merge" on a PR with only one commit, GitHub will suggest using that commit message instead of the PR title for the merge commit, and it's easy to commit this by mistake. Enable this option to also validate the commit message for one commit PRs.
- validateSingleCommit: true # optional
+ # validateSingleCommit: true # optional
diff --git a/.github/workflows/conversation-labels.yaml b/.github/workflows/conversation-labels.yaml
new file mode 100644
index 0000000000..0297464bc5
--- /dev/null
+++ b/.github/workflows/conversation-labels.yaml
@@ -0,0 +1,51 @@
+# This workflow will update issues with proper "conversation related" labels. This mean that stat:awaiting-repsonse label will be present after Unity account made comments and stat:reply-needed will be present when user made latest comment
+
+name: Update conversation labels of the issue
+
+# Trigger for the workflow
+# This trigger will populate the github.event object
+# Details on properties are here: https://docs.github.com/en/webhooks/webhook-events-and-payloads?actionType=created#issue_comment
+on:
+ issue_comment:
+ types: [created]
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.issue.number }}
+ cancel-in-progress: true
+
+# Define labels here
+env:
+ AWAITING_RESPONSE: stat:awaiting-response
+ REPLY_NEEDED: stat:reply-needed
+
+jobs:
+ conversation_labels:
+ name: Calculate and update conversation labels of the issue
+ if: ${{ !github.event.issue.pull_request && github.event.issue.state == 'open' }}
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+
+ steps:
+ - name: Calculate labels
+ run: |
+
+ if [[ "${{ github.event.comment.author_association }}" == "MEMBER" ]]; then
+ # Unity member commented - add awaiting-response, remove reply-needed
+ echo "ADD=${{ env.AWAITING_RESPONSE }}" >> $GITHUB_ENV
+ echo "REMOVE=${{ env.REPLY_NEEDED }}" >> $GITHUB_ENV
+ else
+ # Non-Unity member commented - add reply-needed, remove awaiting-response
+ echo "ADD=${{ env.REPLY_NEEDED }}" >> $GITHUB_ENV
+ echo "REMOVE=${{ env.AWAITING_RESPONSE }}" >> $GITHUB_ENV
+ fi
+
+ - name: Update labels
+ # This runs a command using the github cli: https://cli.github.com/manual/gh_issue_edit
+ # If $ADD is set, it will add the label, otherwise it will remove the label
+ # There is no need to check if $ADD or $REMOVE is set, as the command will ignore it if it is empty
+ run: gh issue edit "$NUMBER" --add-label "$ADD" --remove-label "$REMOVE"
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_REPO: ${{ github.repository }}
+ NUMBER: ${{ github.event.issue.number }}
diff --git a/.github/workflows/mark-stale-issue.yaml b/.github/workflows/mark-stale-issue.yaml
new file mode 100644
index 0000000000..2e77192183
--- /dev/null
+++ b/.github/workflows/mark-stale-issue.yaml
@@ -0,0 +1,39 @@
+# This workflow utilises an existing implementation (https://github.com/actions/stale) that performs the following actions:
+# 1) Adds "stale" label to issues that have "stat:awaiting-response" for more than 30 days meaning that since we don't have enough information we may potentially close such issue
+# 2) Closes issues that have been marked as "stale" for more than 30 days
+
+# This affects only Issues but at some point we may also consider rules for PRs
+
+name: Mark or Close Stale Issues
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '0 0 * * *' # Runs daily at midnight
+
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+
+ steps:
+ - uses: actions/stale@v9
+ with:
+ # Only mark issues (not PRs) as stale
+ any-of-labels: 'stat:awaiting-response'
+ days-before-stale: 30
+ days-before-close: 30
+ stale-issue-label: 'Stale'
+ exempt-issue-labels: 'stat:import,stat:imported'
+ stale-issue-message: >
+ This issue has been automatically marked as stale because it has been awaiting
+ response for over 30 days without any activity.
+
+ Please update the issue with any new information or it may be closed in 30 days.
+ close-issue-message: >
+ This issue has been automatically closed because it has been stale for 30 days
+ without any activity. Feel free to reopen if you have new information to add.
+ # Prevent the action from marking/closing PRs
+ days-before-pr-stale: -1
+ days-before-pr-close: -1
diff --git a/.github/workflows/remove-labels-on-issue-close.yaml b/.github/workflows/remove-labels-on-issue-close.yaml
new file mode 100644
index 0000000000..2ac5145e16
--- /dev/null
+++ b/.github/workflows/remove-labels-on-issue-close.yaml
@@ -0,0 +1,40 @@
+# This workflow will remove almost all labels from closed issues beside ones that could be relevant for future tracking like: "port:", "type:", "priority:", "regression" and "stat:imported"
+
+name: Remove labels when issue is closed
+
+on:
+ issues:
+ types: [closed] # We want it to run on closed issues
+
+jobs:
+ remove_labels:
+ name: Calculate and remove issue labels
+ if: ${{ !github.event.issue.pull_request }} # This is needed to distinguish from PRs (which we don't want to affect)
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write
+
+ steps:
+ - name: Find labels to remove
+ id: data
+ run: |
+ # Convert labels to array and filter out type: labels
+ LABELS_TO_REMOVE=($(echo "$EXISTING_LABELS" | jq -r '.[] | select(startswith("type:") or startswith("port:") or startswith("priority:") or . == "regression" or . == "stat:imported" | not)'))
+
+ # Only proceed if we have labels to remove
+ if [ ${#LABELS_TO_REMOVE[@]} -gt 0 ]; then
+ echo "REMOVE_LABELS=$(IFS=,; echo "${LABELS_TO_REMOVE[*]}")" >> $GITHUB_ENV
+ echo "HAS_LABELS=true" >> $GITHUB_ENV
+ else
+ echo "HAS_LABELS=false" >> $GITHUB_ENV
+ fi
+ env:
+ EXISTING_LABELS: ${{ toJson(github.event.issue.labels.*.name) }}
+
+ - name: Remove labels
+ if: ${{ env.REMOVE_LABELS != '' }}
+ run: gh issue edit "$NUMBER" --remove-label "$REMOVE_LABELS"
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_REPO: ${{ github.repository }}
+ NUMBER: ${{ github.event.issue.number }}
diff --git a/.gitignore b/.gitignore
index 4b4867581e..1d3ee28bec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,4 +9,6 @@ upm-ci~
utr
utr.bat
.download
+Tools/CI/bin
+Tools/CI/obj
diff --git a/.yamato/README.md b/.yamato/README.md
new file mode 100644
index 0000000000..2e0a761714
--- /dev/null
+++ b/.yamato/README.md
@@ -0,0 +1,80 @@
+# Netcode for GameObjects CI Documentation
+
+## Overview
+This document provides an overview of the Continuous Integration (CI) implementation for Netcode for GameObjects.
+Specifics of each test are described within related files (for example .yamato/package-tests.yml) and this file present high level overview related to overall implementation.
+
+## Test Configurations
+CI related files are present inside .yamato/ folder and we can distinguish specific tests
+
+### Helper jobs
+- `.yamato/package-pack.yml` responsible for generating package artifacts (.tgz) required for testing and publishing.
+- `.yamato/project-pack.yml` responsible for generating package artifacts (.tgz) required for testing and publishing. This packs all packages of a given project.
+- `.yamato/_run-all.yml` responsible for grouping tests into groups for easier management (for example "all console tests").
+- `.yamato/_triggers.yml` responsible for defining triggers (PR, nightly, weekly etc.) and defining which tests to run.
+- `disable-burst-if-requested.py` responsible for helping to disable burst if needed.
+- `.yamato/project.metafile` being the central configuration file defining test environments, platforms, projects, editors and other parameters used.
+
+### In-Editor Tests
+- `.yamato/package-tests.yml` responsible for running package tests.
+- `.yamato/project-tests.yml` responsible for running project tests.
+- `.yamato/project-updated-dependencies-test.yml` responsible for running tests after updating dependencies to latest ones.
+- `.yamato/project-standards.yml` responsible for running standards check on a package.
+- `.yamato/code-coverage.yml` responsible for running code coverage analysis.
+- `.yamato/performance-tests.yml` responsible for running performance tests.
+- `.yamato/webgl-build.yml` responsible for making a build for webgl platform.
+
+### Standalone Tests
+- `.yamato/desktop-standalone-tests.yml` responsible for running tests on standalone desktops.
+- `.yamato/console-standalone-test.yml` responsible for running tests on standalone consoles.
+- `.yamato/mobile-standalone-test.yml` responsible for running tests on standalone mobiles.
+
+### Wrench jobs
+This file is auto generated by wrench and used for automating release process.
+Those tests can also be used by our CI as dependencies.
+- `.yamato/wrench/api-validation-jobs.yml` responsible for validating api for a given package version (for example if there are no breaking changes when updating patch version)
+- `.yamato/wrench/package-pack-jobs.yml` responsible for generating package artifacts (.tgz) required for testing and publishing.
+- `.yamato/wrench/preview-a-p-v.yml` responsible for validating PVP (Package Verification Profiles) standards for the package.
+- `.yamato/wrench/promotion-jobs.yml` responsible for publishing.
+- `.yamato/wrench/publish-trigger.yml` responsible for defining jobs that need to pass in order to publish.
+- `.yamato/wrench/recipe-regeneration.yml` responsible for verifying regeneration of wrench recipes (no manual changes).
+- `.yamato/wrench/validation-jobs.yml` responsible for running package tests.
+- `.yamato/wrench/wrench_config.json` this is the configuration file for wrench.
+- `.yamato/generated-scripts/` is a collection of infrastructure instability detection tools.
+
+## Jobs Configuration Structure
+This section explains some configuration details that may be confusing while looking at .yml files.
+
+### Job Generation
+Our configuration uses a dynamic job generation approach based on the `.yamato/project.metafile` configuration. While it may appear that only one job is defined per file, the system (Yamato) actually generates multiple jobs through nested loops.
+Usually only 1 job is defined and then generated with multiple configurations/parameters but in case of standalone tests 2 jobs are defined which are responsible for building and then testing.
+
+### Job Naming Convention
+Because the jobs are being generated their names will be filled by given parameters from project.metfaile. For example jobs from .yamato/console-standalone-test may have names like:
+- Display Name (in Yamato): `Build testproject - [win, 6000.0, il2cpp]`
+- Internal Job Name (used when adding dependency for example): `console_standalone_build_testproject_win_6000.0`
+
+## Platform Support
+Currently, the CI implementation supports the following platforms:
+1. Console Platforms:
+ - Switch
+ - PS4
+ - PS5
+ - Xbox360
+ - XboxOne
+2. Mobile Platforms:
+ - Android
+ - iOS
+3. Desktop Platforms:
+ - Windows
+ - Ubuntu
+ - macOS
+4. Unity Editor Versions
+ - Supports NGOv2.X (6000.0+ editors)
+5. Architectures
+ - x64
+ - ARM64 (This is present for consoles/mobiles but will be extended. More information is present in specific standalone test files)
+
+## Design Considerations
+In theory, we could manually write jobs for every configuration. However, this approach would be more error-prone, especially when modifications or fixes are needed, as it would require keeping track of all configurations.
+The downside of our current approach is that it can sometimes impact readability due to the use of nested if and for statements.
\ No newline at end of file
diff --git a/.yamato/_run-all.yml b/.yamato/_run-all.yml
index 8bf0c61968..ec26e6eb90 100644
--- a/.yamato/_run-all.yml
+++ b/.yamato/_run-all.yml
@@ -1,161 +1,186 @@
-{% metadata_file .yamato/project.metafile %}
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---
-run_all_tests:
- name: Run All Package and Project Tests
+
+# DESCRIPTION--------------------------------------------------------------------------
+ # Those jobs group together related test as dependencies to allow to easily manage running a given set of tests.
+ # This enables efficient test execution for different validation scenarios
+
+# QUALITY CONSIDERATIONS---------------------------------------------------------------
+ # It's important to ensure that all dependencies exist (this can be verified in Yamato) since a modification in parameters may result in a given job not being generated, and thus we will not be able to run such erroneous job.
+
+#-----------------------------------------------------------------------------------
+
+# Runs all package tests
+run_all_package_tests:
+ name: Run All Package Tests
dependencies:
- # Pull in package and validate jobs through the badges job
- - .yamato/_triggers.yml#badges_test_trigger
- - .yamato/mobile-build-and-test.yml#run_{{ projects.first.name }}_tests_{{ mobile_validation_editor }}_iOS
- - .yamato/mobile-build-and-test.yml#run_{{ projects.first.name }}_tests_{{ mobile_validation_editor }}_android
- # - .yamato/_run-all.yml#all_project_tests_standalone
-{% for project in projects -%}
-{% if project.name == "testproject" -%}
-{% for editor in project.test_editors -%}
- - .yamato/webgl-build.yml#build_{{ project.name }}_tests_{{ editor }}_webgl
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.all -%}
+ - .yamato/package-tests.yml#package_test_-_ngo_{{ editor }}_{{ platform.name }}
{% endfor -%}
-{% endif -%}
{% endfor -%}
-{% for platform in test_platforms -%}
-{% for project in projects -%}
-{% for editor in project.test_editors -%}
-{% if editor != "trunk" -%}
-{% for package in project.packages -%}
- - .yamato/package-tests.yml#test_{{ project.name}}_{{ package.name }}_{{ editor }}_{{ platform.name }}
+
+# Runs all package tests on trunk editor
+run_all_package_tests_trunk:
+ name: Run All Package Tests [Trunk only]
+ dependencies:
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.default -%}
+ - .yamato/package-tests.yml#package_test_-_ngo_{{ editor }}_{{ platform.name }}
{% endfor -%}
- - .yamato/project-tests.yml#test_{{ project.name }}_{{ editor }}_{{ platform.name }}
-{% endif -%}
{% endfor -%}
-## Test minimal project with different versions of dependencies
-{% if project.name == "minimalproject" -%}
-{% for dependency in dependencies -%}
-{% for depeditor in dependency.test_editors -%}
-{% if depeditor != "trunk" -%}
- - .yamato/package-tests.yml#test_compatibility_{{ project.name }}_{{ project.packages.first.name }}_with_{{ dependency.name }}@{{ dependency.version }}_{{ depeditor }}_{{ platform.name }}
-{% endif -%}
+
+# Runs all projects tests
+run_all_project_tests:
+ name: Run All Project Tests
+ dependencies:
+{% for project in projects.all -%}
+{% if project.has_tests == "true" -%}
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.all -%}
+ - .yamato/project-tests.yml#test_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
{% endfor -%}
{% endif -%}
{% endfor -%}
-{% endfor -%}
-run_all_tests_trunk:
- name: Run All Package and Project Tests [Trunk]
+
+# Runs all projects tests on trunk editor
+run_all_project_tests_trunk:
+ name: Run All Project Tests [Trunk only]
dependencies:
-{% for platform in test_platforms -%}
-{% for project in projects -%}
-{% for editor in project.test_editors -%}
-{% if editor == "trunk" -%}
-{% for package in project.packages -%}
- - .yamato/package-tests.yml#test_{{ project.name}}_{{ package.name }}_{{ editor }}_{{ platform.name }}
-{% endfor -%}
- - .yamato/project-tests.yml#test_{{ project.name }}_{{ editor }}_{{ platform.name }}
+{% for project in projects.all -%}
+{% if project.has_tests == "true" -%}
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.default -%}
+ - .yamato/project-tests.yml#test_{{ project.name }}_{{ platform.name }}_{{ editor }}
+{% endfor -%}
+{% endfor -%}
{% endif -%}
{% endfor -%}
-## Test minimal project with different versions of dependencies on trunk
-{% if project.name == "minimalproject" -%}
-{% for dependency in dependencies -%}
-{% for depeditor in dependency.test_editors -%}
-{% if depeditor == "trunk" -%}
- - .yamato/package-tests.yml#test_compatibility_{{ project.name }}_{{ project.packages.first.name }}_with_{{ dependency.name }}@{{ dependency.version }}_{{ depeditor }}_{{ platform.name }}
-{% endif -%}
+
+# Runs all project standards check
+run_all_projects_standards:
+ name: Run All Projects Standards
+ dependencies:
+{% for platform in test_platforms.default -%}
+{% for project in projects.all -%}
+{% for editor in validation_editors.default -%}
+ - .yamato/project-standards.yml#standards_{{ platform.name }}_{{ project.name }}_{{ editor }}
+{% endfor -%}
{% endfor -%}
{% endfor -%}
+
+
+# Runs all WebGL builds
+run_all_webgl_builds:
+ name: Run All WebGl Build
+ dependencies:
+{% for project in projects.default -%}
+{% for platform in test_platforms.desktop -%}
+{% if platform.name != "mac" -%} # There is an error about "Light baking could not be started because no valid OpenCL device could be found". Tracked in MTT-11726
+{% for editor in validation_editors.all -%}
+ - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }}
+{% endfor -%}
{% endif -%}
{% endfor -%}
{% endfor -%}
-all_project_tests:
- name: Run All Project Tests
+
+# Runs all WebGL builds on trunk editor
+run_all_webgl_builds_trunk:
+ name: Run All WebGl Build [Trunk only]
dependencies:
- - .yamato/_triggers.yml#badges_test_trigger
-{% for platform in test_platforms -%}
-{% for project in projects -%}
-{% for editor in project.test_editors -%}
- - .yamato/project-tests.yml#test_{{ projects.first.name }}_{{ editor }}_{{ platform.name }}
+{% for project in projects.default -%}
+{% for platform in test_platforms.desktop -%}
+{% if platform.name != "mac" -%} # There is an error about "Light baking could not be started because no valid OpenCL device could be found". Tracked in MTT-11726
+{% for editor in validation_editors.default -%}
+ - .yamato/webgl-build.yml#webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
+{% endif -%}
{% endfor -%}
{% endfor -%}
-all_package_tests:
- name: Run All Package Tests
+
+# Runs all Desktop tests
+run_all_project_tests_desktop_standalone:
+ name: Run All Standalone Tests - Desktop
dependencies:
- - .yamato/_triggers.yml#badges_test_trigger
-{% for platform in test_platforms -%}
-{% for project in projects -%}
-{% for editor in project.test_editors -%}
-{% for package in project.packages -%}
- - .yamato/package-tests.yml#test_{{ project.name}}_{{ package.name }}_{{ editor }}_{{ platform.name }}
+{% for project in projects.default -%}
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.all -%}
+{% for backend in scripting_backends -%}
+ - .yamato/desktop-standalone-tests.yml#desktop_standalone_test_{{ project.name }}_{{ platform.name }}_{{ backend }}_{{ editor }}
{% endfor -%}
{% endfor -%}
{% endfor -%}
{% endfor -%}
-# Test minimal project with different versions of dependencies
-all_compatibility_tests:
- name: Run All Compatibility Tests
+
+# Runs all Desktop tests on trunk editor
+run_all_project_tests_desktop_standalone_trunk:
+ name: Run All Standalone Tests - Desktop [Trunk only]
dependencies:
-{% for platform in test_platforms -%}
-{% for project in projects -%}
-{% if project.name == "minimalproject" -%}
-{% for dependency in dependencies -%}
-{% for editor in dependency.test_editors -%}
- - .yamato/package-tests.yml#test_compatibility_{{ project.name }}_{{ project.packages.first.name }}_with_{{ dependency.name }}@{{ dependency.version }}_{{ editor }}_{{ platform.name }}
+{% for project in projects.default -%}
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.default -%}
+{% for backend in scripting_backends -%}
+ - .yamato/desktop-standalone-tests.yml#desktop_standalone_test_{{ project.name }}_{{ platform.name }}_{{ backend }}_{{ editor }}
{% endfor -%}
{% endfor -%}
-{% endif -%}
{% endfor -%}
{% endfor -%}
-all_singlenode_multiprocess_tests:
- name: Run All Multiprocess Tests - Single Node
+# Runs all Mobile tests
+run_all_project_tests_mobile_standalone:
+ name: Run All Standalone Tests - Mobile
dependencies:
-{% for platform in test_platforms -%}
-{% for project in projects -%}
-{% for editor in project.test_editors -%}
-{% if editor != "trunk" %}
- - .yamato/multiprocess-project-tests.yml#singlenode_multiprocess_test_testproject_{{ editor }}_{{ platform.name }}
-{% endif %}
+{% for project in projects.default -%}
+{% for platform in test_platforms.mobile_test -%}
+{% for editor in validation_editors.all -%}
+ - .yamato/mobile-standalone-test.yml#mobile_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
{% endfor -%}
{% endfor -%}
-all_project_tests_standalone:
- name: Run All Project Tests - Standalone
+
+# Runs all Mobile tests on trunk editor
+run_all_project_tests_mobile_standalone_trunk:
+ name: Run All Standalone Tests - Mobile [Trunk only]
dependencies:
-{% for platform in test_platforms -%}
-{% for project in projects -%}
-{% if project.has_tests == "true" -%}
-{% for editor in project.test_editors -%}
-{% for backend in scripting_backends -%}
- - .yamato/standalone-project-tests.yml#standalone_tests_{{ project.name }}_{{ backend }}_{{ editor }}_{{ platform.name }}
+{% for project in projects.default -%}
+{% for platform in test_platforms.mobile_test -%}
+{% for editor in validation_editors.default -%}
+ - .yamato/mobile-standalone-test.yml#mobile_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}
{% endfor -%}
{% endfor -%}
-{% endif -%}
-{% endfor -%}
{% endfor -%}
-all_project_tests_mobile:
- name: Run All Project Tests - Mobile
+
+# Runs all Console tests
+run_all_project_tests_console_standalone:
+ name: Run All Standalone Tests - Console
dependencies:
-{% for project in projects -%}
-{% if project.name == "testproject" -%}
-{% for editor in project.test_editors -%}
- - .yamato/mobile-build-and-test.yml#run_{{ project.name }}_tests_{{ editor }}_android
- - .yamato/mobile-build-and-test.yml#run_{{ project.name }}_tests_{{ editor }}_iOS
+{% for project in projects.default -%}
+{% for platform in test_platforms.console_test -%}
+{% for editor in validation_editors.all -%}
+ - .yamato/console-standalone-test.yml#console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}
+{% endfor -%}
{% endfor -%}
-{% endif -%}
{% endfor -%}
-all_project_tests_webgl:
- name: Build All Project Tests - WebGL
+
+# Runs all Console tests on trunk editor
+run_all_project_tests_console_standalone_trunk:
+ name: Run All Standalone Tests - Console [Trunk only]
dependencies:
-{% for project in projects -%}
-{% if project.name == "testproject" -%}
-{% for editor in project.test_editors -%}
- - .yamato/webgl-build.yml#build_{{ project.name }}_tests_{{ editor }}_webgl
+{% for project in projects.default -%}
+{% for platform in test_platforms.console_test -%}
+{% for editor in validation_editors.default -%}
+ - .yamato/console-standalone-test.yml#console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}
+{% endfor -%}
{% endfor -%}
-{% endif -%}
{% endfor -%}
diff --git a/.yamato/_triggers.yml b/.yamato/_triggers.yml
index 6bafa5ff1b..352f1f6c08 100644
--- a/.yamato/_triggers.yml
+++ b/.yamato/_triggers.yml
@@ -1,100 +1,123 @@
-{% metadata_file .yamato/project.metafile %}
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---
-develop_nightly:
- name: "\U0001F319 [Nightly] Run All Tests"
- triggers:
- recurring:
- - branch: develop
- frequency: daily
- rerun: always
- dependencies:
- - .yamato/_run-all.yml#run_all_tests
-{% for project in projects -%}
-{% if project.has_tests == "true" -%}
- - .yamato/code-coverage.yml#code_coverage_win_{{ project.name }}_{{ validation_editor }}
-{% endif -%}
-{% endfor -%}
-develop_weekly_trunk:
- name: "\U0001F319 [Weekly] Run All Tests [Trunk]"
- triggers:
- recurring:
- - branch: develop
- frequency: weekly
- rerun: always
- dependencies:
- - .yamato/_run-all.yml#run_all_tests_trunk
+# DESCRIPTION--------------------------------------------------------------------------
+ # This configuration defines three main CI trigger patterns:
+ # 1. Pull Request Validation: Validation performed on PR basis
+ # 2. Nightly Development: Test set run nightly (validates most important test cases)
+ # 3. Weekly Full Validation: Test set run weekly (validates all test cases to prevent any suprises)
+ # Each pattern represents different balance between validation depth, execution time and CI resource usage
-multiprocess_nightly:
- name: "\U0001F319 [Nightly] Run Multiprocess Tests"
- triggers:
- recurring:
- - branch: develop
- frequency: daily
- rerun: always
- dependencies:
- - .yamato/_run-all.yml#all_singlenode_multiprocess_tests
+# TRIGGER PATTERNS-------------------------------------------------------------------
+ # Pull Request:
+ # This test validaes Standards, Package tests, Project tests and Desktop standalone tests to ensure that main platforms are covered
+ # Triggers on PRs to develop, develop-2.0.0, and release branches
+ # Focuses on critical validation paths that we should validate before merging PRs
+ # Cancels previous runs on new commits
+ # Excludes draft PRs
+
+ # Nightly:
+ # This test validaes same subset as pull_request_trigger with addition of mobile/console tests and webgl builds
+ # Runs daily on develop-2.0.0 (local configuration)
+ # Includes all test types but only on trunk. TODO: Add validation for minimum supported editor in nightly
+ # Adds platform-specific and APV validation
+
+ # Weekly:
+ # This test validaes same subset as develop_nightly but runs per all supported editors as well as executes code coverage test and runs project standards per project
+ # Runs across all supported editor versions
+ # Includes code coverage analysis
+ # Validates all projects and standards
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs configurations are generated by ensuring that all dependencies are successful.
+ # The dependencies are taken from _run-all.yml file where we can gather multiple tests into proper sets
-# Run all relevant tasks when a pull request targeting the develop
-# branch is created or updated. Currently only netcode package tests are
-# enabled, since the others are missing test coverage and will fail CI.
+# QUALITY CONSIDERATIONS---------------------------------------------------------------
+# It's important to ensure that all dependencies exist (this can be verified in Yamato) since a modification in parameters may result in a given job not being generated, and thus we will not be able to run such erroneous job.
+
+
+
+#-----------------------------------------------------------------------------------
+
+# Run all relevant tasks when a pull request targeting the develop or release branch is created or updated.
pull_request_trigger:
- name: Pull Request Trigger (master, develop, & release branches)
+ name: Pull Request Trigger (develop, develop-2.0.0, & release branches)
dependencies:
- - .yamato/project-standards.yml#standards_{{ projects.first.name }}
-{% for project in projects -%}
-{% for package in project.packages -%}
-{% if project.validate == "true" -%}
- - .yamato/project-publish.yml#validate_{{ package.name }}_{{ test_platforms.first.name }}_{{ validation_editor }}
-{% endif -%}
-{% endfor -%}
-{% for platform in test_platforms -%}
-{% for package in project.packages -%}
- - .yamato/package-tests.yml#test_{{ project.name }}_{{ package.name }}_{{ project.test_editors.first }}_{{ platform.name }}
-{% endfor -%}
- - .yamato/project-tests.yml#test_{{ project.name }}_{{ project.test_editors.first }}_{{ platform.name }}
-{% endfor -%}
-{% endfor -%}
+ # Run project standards to verify package/default project
+ - .yamato/project-standards.yml#standards_ubuntu_testproject_trunk
+ # Run package EditMode and Playmode tests on desktop platforms on trunk
+ - .yamato/_run-all.yml#run_all_package_tests_trunk
+ # Run project EditMode and PLaymode tests on desktop platforms on trunk
+ - .yamato/_run-all.yml#run_all_project_tests_trunk
+ # Run one standalone test to make sure there are no obvious issues with most common platform (for example --fail-on-assert option is not present with package/project tests)
+ - .yamato/desktop-standalone-tests.yml#desktop_standalone_test_testproject_win_il2cpp_trunk
triggers:
cancel_old_ci: true
pull_requests:
- - targets:
- only:
- - "master"
- - "develop"
- - "develop-2.0.0"
- - "/release\/.*/"
-
-# Currently, we need to have a trigger to updated badges
-# Only package badges currently exist
-badges_test_trigger:
- name: ⚡ Badges Tests Trigger
- agent:
- type: Unity::VM
- image: package-ci/ubuntu-22.04:v4
- flavor: b1.small
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - upm-ci package izon -t
- artifacts:
- logs:
- paths:
- - "upm-ci~/test-results/**/*"
- packages:
- paths:
- - "upm-ci~/packages/**/*"
+ - targets:
+ only:
+ - "develop"
+ - "develop-2.0.0"
+ - "/release\/.*/"
+ - drafts: false
+
+
+# Run all tests on trunk on nightly basis.
+# Same subset as pull_request_trigger with addition of mobile/desktop/console tests and webgl builds
+# Those tests are all running on trunk editor (since it's daily and running all of them would add a lot of overhead)
+develop_nightly:
+ name: "\U0001F319 [Nightly] Run All Tests [Trunk]"
+ triggers:
+ recurring:
+ - branch: develop-2.0.0
+ frequency: daily
+ rerun: always
+ dependencies:
+ # Run project standards to verify package/default project
+ - .yamato/project-standards.yml#standards_ubuntu_testproject_trunk
+ # Run APV jobs to make sure the change won't break any dependants
+ - .yamato/wrench/preview-a-p-v.yml#all_preview_apv_jobs
+ # Run package EditMode and Playmode tests on desktop platforms on trunk
+ - .yamato/_run-all.yml#run_all_package_tests_trunk
+ # Run project EditMode and PLaymode tests on desktop platforms on trunk
+ - .yamato/_run-all.yml#run_all_project_tests_trunk
+ # Run Runtime tests on desktop players on trunk
+ - .yamato/_run-all.yml#run_all_project_tests_desktop_standalone_trunk
+ # Run Runtime tests on mobile players on trunk
+ - .yamato/_run-all.yml#run_all_project_tests_mobile_standalone_trunk
+ # Run Runtime tests on console players on trunk
+ - .yamato/_run-all.yml#run_all_project_tests_console_standalone_trunk
+ # Build player for webgl platform on trunk
+ - .yamato/_run-all.yml#run_all_webgl_builds_trunk
+ # Build player for webgl platform on trunk
+ - .yamato/project-updated-dependencies-test.yml#updated-dependencies_testproject_NGO_ubuntu_trunk
+
+
+# Run all tests on weekly bases
+# Same subset as develop_nightly but runs per all supported editors as well as executes code coverage test and runs project standards per project
+# It's not running wrench jobs since those will run either way in nightly test run
+# This in contrast to nightly checks will run tests on all editors (not only trunk). Running those on weekly basis and trunk tests nightly should be a good balance between making sure that tests are passing and overhead of running lots of tests
+develop_weekly_trunk:
+ name: "\U0001F319 [Weekly] Run All Tests"
+ triggers:
+ recurring:
+ - branch: develop-2.0.0
+ frequency: weekly
+ rerun: always
dependencies:
-{% for project in projects -%}
-{% for package in project.packages -%}
-{% if project.validate == "true" -%}
- - .yamato/project-publish.yml#validate_{{ package.name }}_{{ test_platforms.first.name }}_{{ validation_editor }}
-{% endif -%}
-{% for editor in project.test_editors -%}
-{% if editor != "trunk" -%}
-{% for platform in test_platforms -%}
- - .yamato/package-tests.yml#test_{{ project.name }}_{{ package.name }}_{{ editor }}_{{ platform.name }}
-{% endfor -%}
-{% endif -%}
-{% endfor -%}
-{% endfor -%}
-{% endfor -%}
+ # Run project standards to verify package/default project
+ - .yamato/_run-all.yml#run_all_projects_standards
+ # Run package EditMode and Playmode tests on desktop platforms
+ - .yamato/_run-all.yml#run_all_package_tests
+ # Run project EditMode and PLaymode tests on desktop platforms
+ - .yamato/_run-all.yml#run_all_project_tests
+ # Run Runtime tests on desktop players
+ - .yamato/_run-all.yml#run_all_project_tests_desktop_standalone
+ # Run Runtime tests on mobile players
+ - .yamato/_run-all.yml#run_all_project_tests_mobile_standalone
+ # Run Runtime tests on console players
+ - .yamato/_run-all.yml#run_all_project_tests_console_standalone
+ # Build player for webgl platform on trunk
+ - .yamato/_run-all.yml#run_all_webgl_builds
+ # Run code coverage test
+ - .yamato/code-coverage.yml#code_coverage_ubuntu_trunk
\ No newline at end of file
diff --git a/.yamato/code-coverage.yml b/.yamato/code-coverage.yml
index a56b3525dd..ced6277452 100644
--- a/.yamato/code-coverage.yml
+++ b/.yamato/code-coverage.yml
@@ -1,25 +1,51 @@
-{% metadata_file .yamato/project.metafile %}
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---
-{% for project in projects -%}
-{% if project.has_tests == "true" -%}
-code_coverage_win_{{ project.name }}_{{ validation_editor }}:
- name: Code Coverage Report - Windows - {{ project.name }} - {{ validation_editor }}
+
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for executing package tests with code coverage analysis enabled.
+ # Coverage analysis provides insights into:
+ # Test coverage metrics for NGO assemblies
+ # Line and branch coverage statistics
+ # Generated HTML reports for coverage visualization
+ # Additional metrics for coverage analysis
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs are generated using nested loops through:
+ # 1. For default platform only (Ubuntu) since coverage would not vary between platforms (no need for checks on more platforms)
+ # 2. For default editor version (trunk) since coverage would not vary between editors (no need for checks on more editors)
+
+#TECHNICAL CONSIDERATIONS---------------------------------------------------------------
+ # In theory this job also runs package tests, but we don't want to use it as default since is heavier (because of added coverage analysis) and coverage is not changing that often
+ # Requires Unity Editor installation
+ # Burst compilation is disabled to ensure accurate coverage measurement
+ # In order to properly use -coverage-results-path parameter we need to start it with $PWD (which means the absolute path). Otherwise coverage results will not be visible
+
+# QUALITY CONSIDERATIONS--------------------------------------------------------------------
+ # TODO: somewhere in 2025 we will be able to upload resuls to CodeCov from public repos
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+
+
+
+{% for platform in test_platforms.default -%}
+{% for editor in validation_editors.default -%}
+code_coverage_{{ platform.name }}_{{ editor }}:
+ name: Code Coverage - NGO [{{ platform.name }}, {{ editor }}]
agent:
- type: Unity::VM
- image: package-ci/win10:v4
- flavor: b1.large
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
commands:
- - pip config set global.index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --upgrade
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - unity-downloader-cli -u {{ validation_editor }} -c editor --wait --fast
- - upm-ci package test -u .Editor --package-path com.unity.netcode.gameobjects --enable-code-coverage --code-coverage-options 'enableCyclomaticComplexity;generateAdditionalMetrics;generateHtmlReport;assemblyFilters:+Unity.Netcode.Editor,+Unity.Netcode.Runtime,+Unity.Netcode.Components'
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor {% if platform.name == "mac" %} --arch arm64 {% endif %} # For macOS we use ARM64 models
+ - upm-pvp create-test-project test-project --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ - UnifiedTestRunner --suite=editor --suite=playmode --editor-location=.Editor --testproject=test-project --enable-code-coverage -coverage-results-path=$PWD/test-results/CodeCoverage --coverage-options="generateHtmlReport;generateAdditionalMetrics;assemblyFilters:+Unity.Netcode.Editor,+Unity.Netcode.Runtime" --extra-editor-arg=--burst-disable-compilation --timeout=1800 --reruncount=1 --clean-library-on-rerun --artifacts-path=test-results
artifacts:
logs:
paths:
- - "upm-ci~/test-results/**/*"
+ - "test-results/**/*"
dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
-{% endif -%}
+ - .yamato/package-pack.yml#package_pack_-_ngo_{{ platform.name }}
+{% endfor -%}
{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/console-standalone-test.yml b/.yamato/console-standalone-test.yml
new file mode 100644
index 0000000000..ee74bfee0b
--- /dev/null
+++ b/.yamato/console-standalone-test.yml
@@ -0,0 +1,112 @@
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
+---
+
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for Console platform test validation.
+ # Those tests cover both PlayMode and EditMode tests from package test assemblies.
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs are generated using nested loops (separate build phase and run phase). Worth noting that run phase uses the build as dependency:
+ # 1. For all console platform (Switch, ps4, ps5, xbox360, xboxOne)
+ # 2. For all supported Unity Editor versions (for NGOv2.X this means 6000.0+ editors)
+ # 3. For the default project.
+
+# TECHNICAL CONSIDERATIONS---------------------------------------------------------------
+ # For console devices a split is required into two phases:
+ # 1. Build Phase: Creates standalone players for console platforms
+ # 2. Run Phase: Executes runtime tests on actual console devices
+ # The Run phase uses build job as dependency
+
+ # Note: More of a Unity specific but test assemblies need to be included in the build phase command
+ # Note: All builds can be made on x64 machines since those are compatible with ARM64 target devices
+
+# PLATFORM SPECIFICS-----------------------------------------------------------------
+ # Common Requirements:
+ # All consoles require IL2CPP scripting backend
+ # Platform-specific SDK environment variables
+
+ # Platform-Specific:
+ # Switch: ARM64 architecture only
+ # Other Consoles: x64 architecture
+ # Each console requires specific SDK paths and tools
+
+# QUALITY THOUGHTS--------------------------------------------------------------------
+ # TODO: consider adding all projects that have tests
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+
+
+
+# BUILD PHASE CONFIGURATION------------------------------------------------------------------------------------
+{% for project in projects.default -%}
+{% for platform in test_platforms.console_build -%}
+{% for editor in validation_editors.all -%}
+console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}:
+ name: Build {{ project.name }} - [{{ platform.name }}, {{ editor }}, il2cpp{% if platform.name == "switch" %}, arm64{% endif %}]
+ agent:
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
+ commands:
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c il2cpp -c {{ platform.name }}
+ - UnifiedTestRunner --testproject={{ project.path }} --architecture={% if platform.name == "switch" %}arm64{% else %}x64{% endif %} --scripting-backend=il2cpp --suite=playmode --platform={{ platform.standalone }} --editor-location=.Editor --artifacts-path=artifacts --player-save-path=build/players --testfilter="Unity.Netcode.RuntimeTests.*" --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --reruncount=1 --clean-library-on-rerun --build-only --timeout=1800
+ variables:
+# PS4 related
+ SCE_ORBIS_SDK_DIR: 'C:\Users\bokken\SCE\ps4_sdk_12_00'
+# PS5 related
+ SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\9.000'
+ SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\target\bins'
+ SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE'
+# Switch related
+ NINTENDO_SDK_ROOT: 'C:\Nintendo\nx_sdk-18_3_0\NintendoSDK'
+ UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools'
+ artifacts:
+ players:
+ paths:
+ - "build/players/**/*"
+ logs:
+ paths:
+ - "artifacts/**/*"
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
+
+
+
+# RUN PHASE CONFIGURATION------------------------------------------------------------------------------------
+{% for project in projects.default -%}
+{% for platform in test_platforms.console_test -%}
+{% for editor in validation_editors.all -%}
+console_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}:
+ name: Run {{ project.name }} Tests - [{{ platform.name }}, {{ editor }}, il2cpp]
+ agent:
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
+ commands:
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c il2cpp -c {{ platform.name }}
+ - UnifiedTestRunner --suite=playmode --testproject={{ project.path }} --editor-location=.Editor --artifacts-path=test-results --player-load-path=build/players --fail-on-assert --reruncount=1 --clean-library-on-rerun --timeout=1800
+ variables:
+# PS4 related
+ SCE_ORBIS_SDK_DIR: 'C:\Users\bokken\SCE\ps4_sdk_12_00'
+# PS5 related
+ SCE_PROSPERO_SDK_DIR: 'C:\Program Files (x86)\SCE\Prospero SDKs\9.000'
+ SHADER_COMPILER_PATH: '${SCE_PROSPERO_SDK_DIR}\target\bins'
+ SCE_ROOT_DIR: 'C:\Program Files (x86)\SCE'
+# Switch related
+ NINTENDO_SDK_ROOT: 'C:\Nintendo\nx_sdk-18_3_0\NintendoSDK'
+ UNITY_NINTENDOSDK_CLI_TOOLS: '${NINTENDO_SDK_ROOT}\Tools\CommandLineTools'
+ artifacts:
+ logs:
+ paths:
+ - "test-results/**/*"
+ dependencies:
+ - .yamato/console-standalone-test.yml#console_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/desktop-standalone-tests.yml b/.yamato/desktop-standalone-tests.yml
new file mode 100644
index 0000000000..b6539b1cbf
--- /dev/null
+++ b/.yamato/desktop-standalone-tests.yml
@@ -0,0 +1,112 @@
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
+---
+
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for Desktop platform test validation.
+ # Those tests cover both PlayMode and EditMode tests from package test assemblies.
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs are generated using nested loops (separate build phase and run phase). Worth noting that run phase uses the build as dependency:
+ # 1. For all desktop platform (Windows, macOS, Ubuntu)
+ # 2. For all supported Unity Editor versions (for NGOv2.X this means 6000.0+ editors)
+ # 3. For the default project.
+ # 4. For all scripting backends (mono, il2cpp)
+
+# TECHNICAL CONSIDERATIONS---------------------------------------------------------------
+ # For desktop devices a split is into two phases is not required but we use it for consistency with setup of others standalone platforms:
+ # 1. Build Phase: Creates standalone players for desktop platforms
+ # 2. Run Phase: Executes runtime tests on actual desktop devices
+ # The Run phase uses build job as dependency
+
+ # Note: More of a Unity specific but test assemblies need to be included in the build phase command
+ # Note: All builds can be made on x64 machines since those are compatible with ARM64 target devices
+
+# QUALITY THOUGHTS--------------------------------------------------------------------
+ # TODO: consider adding all projects that have tests
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+
+#-----------------------------------------------------------------------------------
+
+
+# BUILD PHASE CONFIGURATION------------------------------------------------------------------------------------
+{% for project in projects.default -%}
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.all -%}
+{% for backend in scripting_backends -%}
+desktop_standalone_build_{{ project.name }}_{{ platform.name }}_{{ backend }}_{{ editor }}:
+ name : Standalone Build - NGO {{ project.name }} - [{{ platform.name }}, {{ editor }}, {{ backend }}]
+ agent:
+ type: {% if platform.name == "mac" %} {{ platform.type }} {% else %} {{ platform.type }}::GPU {% endif %}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.name == "mac" %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
+ commands:
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor {% if backend == "il2cpp" %} -c il2cpp {% endif %}
+ - UnifiedTestRunner --suite=playmode --platform={{ platform.standalone }} --editor-location=.Editor --testproject={{ project.path }} --scripting-backend={{ backend }} --testfilter="Unity.Netcode.RuntimeTests.*" --player-save-path=build/players --artifacts-path=artifacts --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --reruncount=1 --clean-library-on-rerun --build-only --timeout=1800
+ artifacts:
+ players:
+ paths:
+ - "build/players/**/*"
+ logs:
+ paths:
+ - "artifacts/**/*"
+ dependencies:
+ - .yamato/project-pack.yml#project_pack_-_{{ project.name }}_{{ platform.name }}
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
+
+
+
+
+# RUN PHASE CONFIGURATION------------------------------------------------------------------------------------
+{% for project in projects.default -%}
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.all -%}
+{% for backend in scripting_backends -%}
+desktop_standalone_test_{{ project.name }}_{{ platform.name }}_{{ backend }}_{{ editor }}:
+ name : Standalone Test - NGO {{ project.name }} - [{{ platform.name }}, {{ editor }}, {{ backend }}]
+ agent:
+ type: {% if platform.name == "mac" %} {{ platform.type }} {% else %} {{ platform.type }}::GPU {% endif %}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.name == "mac" %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile). In this case it's specifically for macOS (if used for win/ubuntu then it will cause rust server to fail connecting)
+{% endif %}
+
+# Set additional variables for running the echo server (This is needed ONLY for NGOv2.X because relates to Distributed Authority)
+{% if platform.name != "win" %} # Issues with win and mac are tracked in MTT-11606
+ variables:
+ ECHO_SERVER_PORT: "7788"
+ # Set this to ensure the DA codec tests will fail if they cannot connect to the echo-server
+ # The default is to ignore the codec tests if the echo-server fails to connect
+ ENSURE_CODEC_TESTS: "true"
+{% endif %}
+
+ commands:
+# If ubuntu, run rust echo server (This is needed ONLY for NGOv2.X because relates to Distributed Authority)
+{% if platform.name != "win" %} # Issues with win and mac are tracked in MTT-11606
+ - git clone https://github.com/Unity-Technologies/mps-common-multiplayer-backend.git
+ # Install rust
+ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
+ # Build the echo server
+ - cd ./mps-common-multiplayer-backend/runtime && $HOME/.cargo/bin/cargo build --example ngo_echo_server
+ # Run the echo server in the background - this will reuse the artifacts from the build
+ - cd ./mps-common-multiplayer-backend/runtime && $HOME/.cargo/bin/cargo run --example ngo_echo_server -- --port $ECHO_SERVER_PORT &
+{% endif %}
+
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor {% if backend == "il2cpp" %} -c il2cpp {% endif %} {% if platform.name == "mac" %} --arch arm64 {% endif %} # For macOS we use ARM64 models
+ - UnifiedTestRunner --suite=playmode --player-load-path=build/players --artifacts-path=test-results --testproject={{ project.path }} --editor-location=.Editor --playergraphicsapi=Null --fail-on-assert --reruncount=1 --clean-library-on-rerun --timeout=1800
+ artifacts:
+ logs:
+ paths:
+ - "test-results/**/*"
+ dependencies:
+ - .yamato/desktop-standalone-tests.yml#desktop_standalone_build_{{ project.name }}_{{ platform.name }}_{{ backend }}_{{ editor }}
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
diff --git a/.yamato/disable-burst-if-requested.py b/.yamato/disable-burst-if-requested.py
index fa53669944..edf84d3f26 100644
--- a/.yamato/disable-burst-if-requested.py
+++ b/.yamato/disable-burst-if-requested.py
@@ -1,3 +1,7 @@
+# This file was used before for mobiles and Webgl but was removed (around end of January 2025). The file itself was left here for now in case we would need to use it.
+# This Python script is used to manage Burst AOT (Ahead-Of-Time) compilation settings for Unity builds.
+# An example usage would be "- python .yamato/disable-burst-if-requested.py --project-path {{ project.path }} --platform WebGL"
+
import argparse
import json
import os
diff --git a/.yamato/generated-scripts/infrastructure-instability-detection-linux.sh b/.yamato/generated-scripts/infrastructure-instability-detection-linux.sh
new file mode 100644
index 0000000000..2380121236
--- /dev/null
+++ b/.yamato/generated-scripts/infrastructure-instability-detection-linux.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+# This is an auto-generated script. Do not edit manually!
+set -x
+
+set -e
+if [ -f "infrastructure_instability_detection_standalone.zip" ]; then
+ echo "removed existing archive infrastructure_instability_detection_standalone.zip"
+ rm "infrastructure_instability_detection_standalone.zip" || true
+fi
+
+if [ -d "infrastructure_instability_detection_standalone" ]; then
+ echo "removed existing directory infrastructure_instability_detection_standalone/"
+ rm -rf "infrastructure_instability_detection_standalone" || true
+fi
+
+echo "downloading and extracting infrastructure_instability_detection_standalone@1.0.0"
+curl -fs "https://artifactory-slo.bf.unity3d.com/artifactory/automation-and-tooling/infrastructure-instability-detection/standalone/1.0.0/ubuntu.zip" --output "infrastructure_instability_detection_standalone.zip" --retry 5 || true
+
+if [ -d "infrastructure_instability_detection" ]; then
+ echo "removing infrastructure_instability_detection folder to avoid name clash"
+ rm -rf infrastructure_instability_detection/ || true
+fi
+
+unzip -qo "infrastructure_instability_detection_standalone.zip" && rm "infrastructure_instability_detection_standalone.zip" || true
+
+echo "downloading and extracting patterns"
+curl -fs "https://artifactory-slo.bf.unity3d.com/artifactory/automation-and-tooling/infrastructure-instability-detection/patterns.zip" --output patterns.zip --retry 5 || true
+
+if [ -d "patterns" ]; then
+ echo "removing patterns folder to avoid name clash"
+ rm -rf patterns/ || true
+fi
+
+unzip -q patterns.zip && rm patterns.zip || true
+
+echo "running '$(pwd)/infrastructure_instability_detection'"
+./infrastructure_instability_detection || true
diff --git a/.yamato/generated-scripts/infrastructure-instability-detection-mac.sh b/.yamato/generated-scripts/infrastructure-instability-detection-mac.sh
new file mode 100644
index 0000000000..e37062e974
--- /dev/null
+++ b/.yamato/generated-scripts/infrastructure-instability-detection-mac.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+# This is an auto-generated script. Do not edit manually!
+set -x
+
+set -e
+if [ -f "infrastructure_instability_detection_standalone.zip" ]; then
+ echo "removed existing archive infrastructure_instability_detection_standalone.zip"
+ rm "infrastructure_instability_detection_standalone.zip" || true
+fi
+
+if [ -d "infrastructure_instability_detection_standalone" ]; then
+ echo "removed existing directory infrastructure_instability_detection_standalone/"
+ rm -rf "infrastructure_instability_detection_standalone" || true
+fi
+
+echo "downloading and extracting infrastructure_instability_detection_standalone@1.0.0"
+curl -fs "https://artifactory-slo.bf.unity3d.com/artifactory/automation-and-tooling/infrastructure-instability-detection/standalone/1.0.0/macos.zip" --output "infrastructure_instability_detection_standalone.zip" --retry 5 || true
+
+if [ -d "infrastructure_instability_detection" ]; then
+ echo "removing infrastructure_instability_detection folder to avoid name clash"
+ rm -rf infrastructure_instability_detection/ || true
+fi
+
+unzip -qo "infrastructure_instability_detection_standalone.zip" && rm "infrastructure_instability_detection_standalone.zip" || true
+
+echo "downloading and extracting patterns"
+curl -fs "https://artifactory-slo.bf.unity3d.com/artifactory/automation-and-tooling/infrastructure-instability-detection/patterns.zip" --output patterns.zip --retry 5 || true
+
+if [ -d "patterns" ]; then
+ echo "removing patterns folder to avoid name clash"
+ rm -rf patterns/ || true
+fi
+
+unzip -q patterns.zip && rm patterns.zip || true
+
+echo "running '$(pwd)/infrastructure_instability_detection'"
+./infrastructure_instability_detection || true
diff --git a/.yamato/generated-scripts/infrastructure-instability-detection-win.cmd b/.yamato/generated-scripts/infrastructure-instability-detection-win.cmd
new file mode 100644
index 0000000000..64513447d2
--- /dev/null
+++ b/.yamato/generated-scripts/infrastructure-instability-detection-win.cmd
@@ -0,0 +1,11 @@
+@echo on
+rem This is an auto-generated script. Do not edit manually!
+
+curl -fs "https://artifactory-slo.bf.unity3d.com/artifactory/automation-and-tooling/infrastructure-instability-detection/standalone/1.0.0/windows.zip" --output "infrastructure_instability_detection_standalone.zip" --retry 5
+IF EXIST "infrastructure_instability_detection" rmdir /s /q infrastructure_instability_detection
+powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('infrastructure_instability_detection_standalone.zip', '.'); }" && DEL "infrastructure_instability_detection_standalone.zip"
+curl -fs "https://artifactory-slo.bf.unity3d.com/artifactory/automation-and-tooling/infrastructure-instability-detection/patterns.zip" --output patterns.zip --retry 5
+IF EXIST "patterns" rmdir /s /q patterns
+powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('patterns.zip', '.'); }" && DEL "patterns.zip"
+infrastructure_instability_detection
+exit /b 0
diff --git a/.yamato/mobile-build-and-test.yml b/.yamato/mobile-build-and-test.yml
deleted file mode 100644
index 3f1fbd80cd..0000000000
--- a/.yamato/mobile-build-and-test.yml
+++ /dev/null
@@ -1,157 +0,0 @@
-{% metadata_file .yamato/project.metafile %}
----
-
-{% for project in projects -%}
-{% if project.name == "testproject" -%}
-{% for editor in project.test_editors -%}
-build_{{ project.name }}_tests_{{ editor }}_android:
- name: Build {{ project.name }} Tests - {{ editor }} - Android
- agent:
- type: Unity::VM
- image: desktop/android-execution-r19:v0.1.1-860408
- flavor: b1.xlarge
- commands:
- - pip config set global.index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --upgrade
- - curl -s https://artifactory-slo.bf.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr.bat --output utr.bat
- - python .yamato/disable-burst-if-requested.py --project-path testproject --platform Android
- - unity-downloader-cli -u {{ editor }} -c editor -c Android -w --fast
- - |
- set UTR_VERSION=0.12.0
- utr.bat --artifacts_path=artifacts --timeout=1800 --testproject={{ project.name }} --editor-location=.Editor --suite=playmode --platform=android --build-only --player-save-path=build/players --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --testfilter=Unity.Netcode.RuntimeTests
- artifacts:
- logs:
- paths:
- - '*.log'
- - '*.xml'
- - artifacts/**/*
- - testproject/Logs/**
- - testproject/Library/*.log
- - testproject/*.log
- - testproject/Builds/*.log
- - build/test-results/**
- - artifacts/**
- - build/players/**
- variables:
- CI: true
- ENABLE_BURST_COMPILATION: False
-{% endfor -%}
-{% endif -%}
-{% endfor -%}
-
-
-{% for project in projects -%}
-{% if project.name == "testproject" -%}
-{% for editor in project.test_editors -%}
-build_{{ project.name }}_tests_{{ editor }}_iOS:
- name: Build {{ project.name }} Tests - {{ editor }} - iOS
- agent:
- type: Unity::VM::osx
- image: mobile/ios-macos-11:stable
- flavor: b1.large
- commands:
- - pip config set global.index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --upgrade
- - unity-downloader-cli -u {{ editor }} -c editor -c iOS -w --fast
- - curl -s https://artifactory-slo.bf.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr --output utr
- - chmod +x ./utr
- - export UTR_VERSION=0.12.0
- - ./utr --artifacts_path=artifacts --timeout=1800 --testproject={{ project.name }} --editor-location=.Editor --suite=playmode --platform=iOS --build-only --player-save-path=build/players --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --testfilter=Unity.Netcode.RuntimeTests
- artifacts:
- logs:
- paths:
- - '*.log'
- - '*.xml'
- - artifacts/**/*
- - testproject/Logs/**
- - testproject/Library/*.log
- - testproject/*.log
- - testproject/Builds/*.log
- - build/test-results/**
- - artifacts/**
- - build/players/**
-{% endfor -%}
-{% endif -%}
-{% endfor -%}
-
-
-{% for project in projects -%}
-{% if project.name == "testproject" -%}
-{% for editor in project.test_editors -%}
-run_{{ project.name }}_tests_{{ editor }}_iOS:
- name: Run {{ project.name }} Tests - {{ editor }} - iOS
- agent:
- type: Unity::mobile::iPhone
- model: SE
- image: mobile/ios-macos-11:stable
- flavor: b1.medium
- # Set a dependency on the build job
- dependencies:
- - .yamato/mobile-build-and-test.yml#build_{{ project.name }}_tests_{{ editor }}_iOS
- commands:
- # Download standalone UnityTestRunner
- - curl -s https://artifactory-slo.bf.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr --output utr
- # Give UTR execution permissions
- - chmod +x ./utr
- # Run the test build on the device
- - export UTR_VERSION=0.12.0
- - ./utr -artifacts_path=artifacts --testproject={{ project.name }} --editor-location=.Editor --reruncount=2 --suite=playmode --platform=iOS --player-load-path=build/players --testfilter=Unity.Netcode.RuntimeTests
- artifacts:
- logs:
- paths:
- - '*.log'
- - '*.xml'
- - artifacts/**/*
- - testproject/Logs/**
- - testproject/Library/*.log
- - testproject/*.log
- - testproject/Builds/*.log
- - build/test-results/**
- - artifacts/**
- - build/players/**
-{% endfor -%}
-{% endif -%}
-{% endfor -%}
-
-
-{% for project in projects -%}
-{% if project.name == "testproject" -%}
-{% for editor in project.test_editors -%}
-run_{{ project.name }}_tests_{{ editor }}_android:
- name: Run {{ project.name }} Tests - {{ editor }} - Android
- agent:
- type: Unity::mobile::shield
- image: mobile/android-execution-r19:stable
- flavor: b1.medium
- # Skip repository cloning
- skip_checkout: true
- # Set a dependency on the build job
- dependencies:
- - .yamato/mobile-build-and-test.yml#build_{{ project.name }}_tests_{{ editor }}_android
- commands:
- - curl -s https://artifactory-slo.bf.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr.bat --output utr.bat
- - |
- set ANDROID_DEVICE_CONNECTION=%BOKKEN_DEVICE_IP%
- start %ANDROID_SDK_ROOT%\platform-tools\adb.exe connect %BOKKEN_DEVICE_IP%
- start %ANDROID_SDK_ROOT%\platform-tools\adb.exe devices
- set UTR_VERSION=0.12.0
- ./utr --artifacts_path=artifacts --testproject={{ project.name }} --editor-location=.Editor --reruncount=2 --suite=playmode --platform=android --player-connection-ip=%BOKKEN_HOST_IP% --player-load-path=build/players --testfilter=Unity.Netcode.RuntimeTests
- # Set uploadable artifact paths
- artifacts:
- logs:
- paths:
- - '*.log'
- - '*.xml'
- - artifacts/**/*
- - testproject/Logs/**
- - testproject/Library/*.log
- - testproject/*.log
- - testproject/Builds/*.log
- - build/test-results/**
- - artifacts/**
- - build/players/**
-{% endfor -%}
-{% endif -%}
-{% endfor -%}
diff --git a/.yamato/mobile-standalone-test.yml b/.yamato/mobile-standalone-test.yml
new file mode 100644
index 0000000000..8169d34e8d
--- /dev/null
+++ b/.yamato/mobile-standalone-test.yml
@@ -0,0 +1,109 @@
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
+---
+
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for Mobile platform test validation.
+ # Those tests cover both PlayMode and EditMode tests from package test assemblies.
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs are generated using nested loops through:
+ # 1. For all mobile platform (Android, iOS)
+ # 2. For all supported Unity Editor versions (for NGOv2.X this means 6000.0+ editors)
+ # 3. For the default project.
+
+# TECHNICAL CONSIDERATIONS---------------------------------------------------------------
+ # For mobile devices a split is required into two phases:
+ # 1. Build Phase: Creates standalone players for mobile platforms
+ # 2. Run Phase: Executes runtime tests on actual mobile devices
+ # The Run phase uses build job as dependency
+ # Note: More of a Unity specific but test assemblies need to be included in the build phase command
+ # Note: All builds can be made on x64 machines since those are compatible with ARM64 target devices
+
+# PLATFORM SPECIFICS--------------------------------------------------------------------
+ # iOS Requirements:
+ # Must use IL2CPP scripting backend
+ # Only supports ARM64 architecture
+ # Builds on macOS agents only
+
+ # Android Requirements:
+ # Uses IL2CPP scripting backend (recommended over Mono)
+ # Supports both ARM64 and ARMv7 architectures
+ # Can be build on any desktop platform
+
+# QUALITY CONSIDERATIONS--------------------------------------------------------------------
+ # TODO: consider adding all projects that have tests
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+
+
+# BUILD PHASE CONFIGURATION------------------------------------------------------------------------------------
+{% for project in projects.default -%}
+{% for platform in test_platforms.mobile_build -%}
+{% for editor in validation_editors.all -%}
+mobile_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}:
+ name: Build {{ project.name }} - [{{ platform.name }}, {{ editor }}, il2cpp]
+ agent:
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
+ commands:
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c il2cpp {% if platform.base == "mac" %} -c ios {% else %} -c android {% endif %}
+ - UnifiedTestRunner --suite=playmode --platform={{ platform.standalone }} --testproject={{ project.path }} --architecture={{ platform.architecture }} --scripting-backend=il2cpp --editor-location=.Editor --artifacts-path=artifacts --testfilter="Unity.Netcode.RuntimeTests.*" --player-save-path=build/players --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --reruncount=1 --clean-library-on-rerun --build-only --timeout=1800
+ artifacts:
+ players:
+ paths:
+ - "build/players/**/*"
+ logs:
+ paths:
+ - "artifacts/**/*"
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
+
+
+# RUN PHASE CONFIGURATION------------------------------------------------------------------------------------
+{% for project in projects.default -%}
+{% for platform in test_platforms.mobile_test -%}
+{% for editor in validation_editors.all -%}
+mobile_standalone_test_{{ project.name }}_{{ platform.name }}_{{ editor }}:
+ name: Run {{ project.name }} Tests - [{{ platform.name }}, {{ editor }}, il2cpp]
+ agent:
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
+ commands:
+ # Installing editor. We still need the editor to run tests on standalone build and for that the Editor is required
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c il2cpp {% if platform.base == "mac" %} -c ios {% else %} -c android {% endif %}
+
+{% if platform.standalone == "Android" %}
+ # Download standalone UnityTestRunner and ADB setup
+ - command: wget http://artifactory-slo.bf.unity3d.com/artifactory/mobile-generic/android/ADBKeys.zip!/adbkey.pub -O %USERPROFILE%/.android/adbkey.pub
+ - command: wget http://artifactory-slo.bf.unity3d.com/artifactory/mobile-generic/android/ADBKeys.zip!/adbkey -O %USERPROFILE%/.android/adbkey
+ - command: gsudo NetSh Advfirewall set allprofiles state off
+
+ # Connect to Android device
+ - command: '"%ANDROID_SDK_ROOT%\platform-tools\adb.exe" connect %BOKKEN_DEVICE_IP%'
+
+ # Run tests for Android devices
+ - |
+ set ANDROID_DEVICE_CONNECTION=%BOKKEN_DEVICE_IP%
+ UnifiedTestRunner --suite=playmode --platform={{ platform.standalone }} --artifacts-path=test-results --player-load-path=build/players --testproject={{ project.path }} --editor-location=.Editor --player-connection-ip=%BOKKEN_HOST_IP% --fail-on-assert --reruncount=1 --clean-library-on-rerun --timeout=3600
+{% else %}
+
+ # Run tests for non-Android devices
+ - UnifiedTestRunner --suite=playmode --platform={{ platform.standalone }} --artifacts-path=test-results --player-load-path=build/players --testproject={{ project.path }} --editor-location=.Editor --fail-on-assert --reruncount=1 --clean-library-on-rerun --timeout=3600
+{% endif %}
+ artifacts:
+ logs:
+ paths:
+ - "test-results/**/*"
+ dependencies:
+ - .yamato/mobile-standalone-test.yml#mobile_standalone_build_{{ project.name }}_{{ platform.name }}_{{ editor }}
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
diff --git a/.yamato/multiprocess-project-tests.yml b/.yamato/multiprocess-project-tests.yml
deleted file mode 100644
index df48259914..0000000000
--- a/.yamato/multiprocess-project-tests.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-{% metadata_file .yamato/project.metafile %}
----
-
-{% for project in projects -%}
-{% if project.name == "testproject" %}
-{% for editor in project.test_editors -%}
-{% for platform in test_platforms -%}
-singlenode_multiprocess_test_testproject_{{ editor }}_{{ platform.name }}:
- name : Multiprocess Tests - {{ editor }} on {{ platform.name }}
- agent:
- type: {{ platform.type }}
- image: {{ platform.image }}
- flavor: {{ platform.flavor}}
- commands:
- - pip config set global.index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --upgrade
-{% if editor != "trunk" %}
- - unity-downloader-cli -u {{ editor }} -c editor -w --fast
- - curl -s https://artifactory-slo.bf.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr{% if platform.name == "win" %}.bat --output utr.bat{% endif %}{% if platform.name != "win" %} --output utr && chmod +x ./utr{% endif %}
- - {{ platform.editorpath }} -projectpath testproject -batchmode -quit -nographics -logfile BuildMultiprocessTestPlayer.log -executeMethod Unity.Netcode.MultiprocessRuntimeTests.BuildMultiprocessTestPlayer.BuildRelease
-{% if platform.name == "mac" %} - sudo codesign --force --deep --sign - ./testproject/Builds/MultiprocessTests/MultiprocessTestPlayer.app{% endif %}
- - {{ platform.utr }} --suite=playmode --testproject=testproject --editor-location=.Editor --testfilter=Unity.Netcode.MultiprocessRuntimeTests --extra-editor-arg=-bypassIgnoreUTR
-{% endif %}
- after:
- - echo "After block"
-{% if editor != "trunk" %}
-{% if platform.name == "win" %} - copy %USERPROFILE%\.multiprocess\logfile* .{% endif %}
-{% if platform.name != "win" %} - cp $HOME/.multiprocess/logfile* .{% endif %}
-{% endif %}
- artifacts:
- logs:
- paths:
- - "upm-ci~/test-results/**/*"
- - BuildMultiprocessTestPlayer.log
- - "logfile*"
- - "*.log"
- - "*.txt"
- dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
-{% endfor -%}
-{% endfor -%}
-{% endif -%}
-{% endfor -%}
diff --git a/.yamato/package-pack.yml b/.yamato/package-pack.yml
new file mode 100644
index 0000000000..f4b02dc19a
--- /dev/null
+++ b/.yamato/package-pack.yml
@@ -0,0 +1,50 @@
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
+---
+
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for packing a specific package. It generates package artifacts (.tgz) required for testing and publishing, ensuring all dependencies are properly bundled and validated before any test execution.
+ # The job itself doesn't test anything specific but rather it prepares project packages that will be consumed by other pipeline jobs.
+ # The job performs additional validation by using Package Verification Pipeline (PVP). It includes x-ray validation for quick package structure verification
+ # Because of that validation we can detect errors at the early stage of testing so not to waste CI resources
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs are generated using nested loops through:
+ # 1. For all desktop platforms (Windows, Ubuntu, macOS)
+
+# TECHNICAL CONSIDERATIONS---------------------------------------------------------------
+ # Job does not require Unity Editor in order to perform packing.
+ # Job uses PVP x-ray for lightweight validation
+ # Job generates both packages artifacts and pvp-results file.
+ # In theory, we could just use one platform for packing projects (for example ubuntu) but in order to reduce confusion we are using same platform as the job utilizing project pack as dependency.
+
+# QUALITY CONSIDERATIONS--------------------------------------------------------------------
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+ # TODO: we should aim to replace target PVP profile from supported to gold
+
+#------------------------------------------------------------------------------------
+
+{% for platform in test_platforms.desktop -%}
+package_pack_-_ngo_{{ platform.name }}:
+ name: Package Pack (and x-ray) - NGO [{{ platform.name }}]
+ agent:
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
+ timeout: 0.25
+ variables:
+ XRAY_PROFILE: "supported ./pvpExceptions.json"
+ commands:
+ - upm-pvp pack "com.unity.netcode.gameobjects" --output upm-ci~/packages
+ - upm-pvp xray --packages "upm-ci~/packages/com.unity.netcode.gameobjects*.tgz" --results pvp-results
+ - upm-pvp require {% if platform.name == "win" %}"%XRAY_PROFILE%"{% else %}"$XRAY_PROFILE"{% endif %} --results pvp-results --allow-missing
+ artifacts:
+ logs:
+ paths:
+ - "pvp-results/*"
+ packages:
+ paths:
+ - "upm-ci~/**"
+{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/package-tests.yml b/.yamato/package-tests.yml
index 1779a7008e..2d304ad02e 100644
--- a/.yamato/package-tests.yml
+++ b/.yamato/package-tests.yml
@@ -1,57 +1,59 @@
-{% metadata_file .yamato/project.metafile %}
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---
-# Go through all platforms, editors and packages in the metadata
-# to generate its independent package tests and validation tests.
-# The idea is to only run validation once per package and not mix.
-# the results with package tests
-{% for project in projects -%}
-{% for package in project.packages -%}
-{% for editor in project.test_editors -%}
-{% for platform in test_platforms -%}
-test_{{project.name}}_{{ package.name }}_{{ editor }}_{{ platform.name }}:
- name : {{ project.name }} - {{ package.name }} package tests - {{ editor }} on {{ platform.name }}
- agent:
- type: {{ platform.type }}
- image: {{ platform.image }}
- flavor: {{ platform.flavor}}
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - {% if platform.name == "ubuntu" %}DISPLAY=:0 {% endif %}upm-ci project test -u {{ editor }} --type package-tests --project-path {{ project.name }} --package-filter {{ package.name }}
- artifacts:
- logs:
- paths:
- - "upm-ci~/test-results/**/*"
- dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
-{% endfor -%}
-{% endfor -%}
-{% endfor -%}
-{% endfor -%}
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for execution of package-specific tests in Unity Editor context
+ # Those tests cover both PlayMode and EditMode tests from package test assemblies
+ # Additionally it combines Package Verification Pipeline (PVP) validation. This ensures that package is compatible with Unity standards
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs are generated using nested loops through:
+ # 1. For all desktop platforms (Windows, Ubuntu, macOS)
+ # 2. For all supported Unity Editor versions (for NGOv2.X this means 6000.0+ editors)
+
+# TECHNICAL CONSIDERATIONS---------------------------------------------------------------
+ # This job runs in Editor context only (no player builds required)
+ # No scripting backend variations needed (Editor context)
+ # Architecture variations not applicable (Editor context)
+ # Requires project packaging as prerequisite (dependency job)
+ # Uses PVP for package validation. Specifically it looks for supported profiles which we should conform to but takes ./pvpExceptions.json file into consideration where we note our known issues related to PVP checks
+
+# QUALITY CONSIDERATIONS--------------------------------------------------------------------
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+ # TODO: we should aim to replace target PVP profile from supported to gold
+
+#------------------------------------------------------------------------------------
-# Test minimal project with different versions of dependencies
-{% for project in projects -%}
-{% if project.name == "minimalproject" -%}
-{% for dependency in dependencies -%}
-{% for editor in dependency.test_editors -%}
-{% for platform in test_platforms -%}
-test_compatibility_{{project.name}}_{{ project.packages.first.name }}_with_{{ dependency.name }}@{{ dependency.version }}_{{ editor }}_{{ platform.name }}:
- name : {{ project.name }} - {{ project.packages.first.name }} with {{ dependency.name }}@{{ dependency.version }} - {{ editor }} on {{ platform.name }}
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.all -%}
+package_test_-_ngo_{{ editor }}_{{ platform.name }}:
+ name : Package Test - NGO [{{ platform.name }}, {{ editor }}]
agent:
type: {{ platform.type }}
image: {{ platform.image }}
- flavor: {{ platform.flavor}}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
+ variables:
+ XRAY_PROFILE: "supported ./pvpExceptions.json"
+ UNITY_EXT_LOGGING: 1
commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - {% if platform.name == "ubuntu" %}DISPLAY=:0 {% endif %}upm-ci project test -u {{ editor }} --type project-tests --project-path {{ project.name }} --package-filter {{ project.packages.first.name }}
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor {% if platform.name == "mac" %} --arch arm64 {% endif %} # For macOS we use ARM64 models.
+
+ # Validate PVP checks for package.
+ - upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --filter "com.unity.netcode.gameobjects" --results pvp-results
+ - upm-pvp require {% if platform.name == "win" %}"%XRAY_PROFILE%"{% else %}"$XRAY_PROFILE"{% endif %} --results pvp-results
+
+ # Run UTR to test packages.
+ - upm-pvp create-test-project test-project --packages "upm-ci~/packages/*.tgz" --filter "com.unity.netcode.gameobjects" --unity .Editor
+ - UnifiedTestRunner --suite=editor --suite=playmode --editor-location=.Editor --testproject=test-project --artifacts-path=test-results "--ff={ops.upmpvpevidence.enable=true}" --reruncount=1 --clean-library-on-rerun
artifacts:
logs:
paths:
- "upm-ci~/test-results/**/*"
+ - "pvp-results/*"
dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}_{{ dependency.name }}@{{ dependency.version }}
-{% endfor -%}
-{% endfor -%}
+ - .yamato/package-pack.yml#package_pack_-_ngo_{{ platform.name }}
{% endfor -%}
-{% endif -%}
{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/performance-tests.yml b/.yamato/performance-tests.yml
new file mode 100644
index 0000000000..26bf8102f4
--- /dev/null
+++ b/.yamato/performance-tests.yml
@@ -0,0 +1,47 @@
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
+---
+
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for executing performance tests for NGO package.
+ # Its configuration is set to not report any data but just to give results (at least in current state since we don't have any tests to run).
+ # Currently because of lack of performance tests this job will always return "no tests have been selected" and because oif that it's not included in any trigger jobs.
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs configurations are generated using nested loops through:
+ # 1. For all desktop platforms (Windows, Ubuntu, macOS)
+ # 2. For all supported Unity Editor versions (For NGOv2.X it means 6000+)
+ # 3. For the default project (project is used only as a context for the build). TODO-comment: if performance tests would be included in projects then we should make an approperiate split.
+
+# TECHNICAL CONSIDERATIONS---------------------------------------------------------------
+ # Tests are run in Editor context only
+ # No performance metrics are reported to monitoring systems
+
+# QUALITY CONSIDERATIONS--------------------------------------------------------------------
+ # TODO: Currently NGO don't have any performance tests so this job is a placeholder for the future. We should discuss how to approach the topic of performance testing
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+
+#------------------------------------------------------------------------------------
+
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.all -%}
+{% for project in projects.default -%}
+performance_editor_tests_-_NGO_{{ platform.name }}_{{ editor }}_no_data_reporting:
+ name : Performance editor Tests - NGO {{ project.name }} [{{ platform.name }}, {{ editor }}] (No Data Reporting)
+ agent:
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
+ commands:
+ - unity-downloader-cli -u {{ editor }} -c Editor --wait {% if platform.name == "mac" %} --arch arm64 {% endif %} # For macOS we use ARM64 models. Installing basic editor
+ - UnifiedTestRunner --suite=editor --suite=playmode --testproject={{ project.path }} --editor-location=.Editor --timeout=3600 --artifacts-path=artifacts --extra-editor-arg=-assemblyNames --extra-editor-arg=Unity.NetCode.* --extra-editor-arg=-testCategory --extra-editor-arg=Performance --extra-editor-arg=-enablePackageManagerTraces --reruncount=1 --clean-library-on-rerun --dontreportperformancedata
+ # TODO: when performance tests will be present we need to add actuall execution of this test
+ artifacts:
+ logs:
+ paths:
+ - "artifacts/**/*"
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/project-pack.yml b/.yamato/project-pack.yml
index 30ded64633..5a0337a6a1 100644
--- a/.yamato/project-pack.yml
+++ b/.yamato/project-pack.yml
@@ -1,50 +1,43 @@
-{% metadata_file .yamato/project.metafile %}
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---
-{% for project in projects -%}
-pack_{{ project.name }}:
- name: Pack {{ project.name }}
- agent:
- type: Unity::VM
- image: package-ci/ubuntu-22.04:v4
- flavor: b1.small
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - upm-ci project pack --project-path {{ project.path }}
- - upm-pvp xray --packages "upm-ci~/packages/*.tgz" --results upm-ci~/xray
- - upm-pvp require "$XRAY_PROFILE" --allow-missing --results upm-ci~/xray --exemptions upm-ci~/xray/new-exemptions.json || true
- - upm-pvp require "$XRAY_PROFILE ./pvp-exemptions.json" --results upm-ci~/xray
- artifacts:
- packages:
- paths:
- - "upm-ci~/**"
-{% endfor -%}
-# Pack minimal project with different versions of dependencies
-{% for project in projects -%}
-{% if project.name == "minimalproject" -%}
-{% for dependency in dependencies -%}
-pack_{{ project.name }}_{{ dependency.name }}@{{ dependency.version }}:
- name: Pack {{ project.name }} with {{ dependency.name }}@{{ dependency.version }}
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for packing a specific project. It generates package artifacts (.tgz) required for testing and publishing, ensuring all dependencies are properly bundled and validated before any test execution.
+ # The job itself doesn't test anything specific but rather it prepares project packages that will be consumed by other pipeline jobs.
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs configurations are generated using nested loops through:
+ # 1. For all projects (testproject, minimalproject, testproject-tools-integration).
+ # 2. For all desktop platforms (Win, Ubuntu, Mac)
+
+# TECHNICAL CONSIDERATIONS--------------------------------------------------------------------
+ # Job does not require Unity Editor in order to perform packing.
+ # In theory, we could just use one platform for packing projects (for example ubuntu) but in order to reduce confusion we are using same platform as the job utilizing project pack as dependency.
+
+# QUALITY CONSIDERATIONS--------------------------------------------------------------------
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+ # TODO: Currently upm-ci is being used but in the future it will be replaced by upm-pvp. Additionally this would allow us to run PVP checks on projects
+
+
+#--------------------------------------------------------------------------------------
+
+{% for project in projects.all -%}
+{% for platform in test_platforms.desktop -%}
+project_pack_-_{{ project.name }}_{{ platform.name }}:
+ name: Project Pack - {{ project.name }} [{{ platform.name }}]
agent:
- type: Unity::VM
- image: package-ci/ubuntu-22.04:v4
- flavor: b1.small
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - curl -L https://artifactory.prd.it.unity3d.com/artifactory/api/gpg/key/public | sudo apt-key add -
- - sudo sh -c "echo 'deb https://artifactory.prd.it.unity3d.com/artifactory/unity-apt-local bionic main' > /etc/apt/sources.list.d/unity.list"
- - sudo apt update
- - sudo apt install -y unity-config
- - unity-config settings project-path {{ project.path }}
- - unity-config project add dependency {{ dependency.name }}@{{ dependency.version }}
+ - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm # upm-ci is not preinstalled on the image so we need to download it
- upm-ci project pack --project-path {{ project.path }}
- - upm-pvp xray --packages "upm-ci~/packages/*.tgz" --results upm-ci~/xray
- - upm-pvp require "$XRAY_PROFILE" --allow-missing --results upm-ci~/xray --exemptions upm-ci~/xray/new-exemptions.json || true
- - upm-pvp require "$XRAY_PROFILE ./pvp-exemptions.json" --results upm-ci~/xray
artifacts:
packages:
paths:
- - "upm-ci~/**"
+ - "upm-ci~/packages/**/*"
{% endfor -%}
-{% endif -%}
{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/project-promotion.yml b/.yamato/project-promotion.yml
deleted file mode 100644
index 8858dbd382..0000000000
--- a/.yamato/project-promotion.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-{% metadata_file .yamato/project.metafile %}
----
-{% for project in projects -%}
-{% if project.publish == "true" -%}
-{% for package in project.packages -%}
-{% for editor in project.test_editors -%}
-{% for platform in test_platforms -%}
-promotion_validate_{{ project.name }}_{{ package.name }}_{{ platform.name }}_{{ editor }}:
- name : Validate (Vetting Tests) Project {{ project.name }} - Package {{ package.name }} - {{ editor }} on {{ platform.name }}
- agent:
- type: {{ platform.type }}
- image: {{ platform.image }}
- flavor: {{ platform.flavor}}
- variables:
- UPMCI_PROMOTION: 1
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - {% if platform.name == "ubuntu" %}DISPLAY=:0 {% endif %}upm-ci project test -u {{ editor }} --project-path {{ project.path }} --type vetting-tests --project-path {{ project.path }} --package-filter {{ package.name }}
- artifacts:
- logs:
- paths:
- - "upm-ci~/test-results/**/*"
- dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
-{% endfor -%}
-{% endfor -%}
-
-promote_{{ project.name }}_{{ package.name }}:
- name: Promote Project {{ project.name }} - Package {{ package.name }} to Production
- agent:
- type: Unity::VM
- image: package-ci/win10:v4
- flavor: b1.small
- variables:
- UPMCI_PROMOTION: 1
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - upm-ci package promote --package-path {{ package.path }}
- artifacts:
- artifacts:
- paths:
- - "upm-ci~/packages/*.tgz"
- dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
- - .yamato/project-promotion.yml#promotion_validate_{{ project.name }}_{{ package.name }}_{{ test_platforms.first.name }}_{{ validation_editor }}
- - .yamato/project-promotion.yml#promote_{{ project.name }}_{{ package.name }}_dry_run
-
-promote_{{ project.name }}_{{ package.name }}_dry_run:
- name: Promote Project {{ project.name }} - Package {{ package.name }} to Production (dry-run)
- agent:
- type: Unity::VM
- image: package-ci/win10:v4
- flavor: b1.small
- variables:
- UPMCI_PROMOTION: 1
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - upm-ci package promote --package-path {{ package.path }} --dry-run
- artifacts:
- artifacts:
- paths:
- - "upm-ci~/packages/*.tgz"
- dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
- - .yamato/project-publish.yml#publish_{{ project.name }}_{{ package.name }}
-{% for editor in project.test_editors -%}
-{% for platform in test_platforms -%}
- - .yamato/project-promotion.yml#promotion_validate_{{ project.name }}_{{ package.name }}_{{ platform.name }}_{{ editor }}
-{% endfor -%}
-{% endfor -%}
-
-{% endfor -%}
-{% endif -%}
-{% endfor -%}
diff --git a/.yamato/project-publish.yml b/.yamato/project-publish.yml
deleted file mode 100644
index 9f114a9ae6..0000000000
--- a/.yamato/project-publish.yml
+++ /dev/null
@@ -1,67 +0,0 @@
-{% metadata_file .yamato/project.metafile %}
----
-{% for project in projects -%}
-{% if project.publish == "true" -%}
-{% for package in project.packages -%}
-{% for editor in project.test_editors -%}
-{% for platform in test_platforms -%}
-validate_{{ package.name }}_{{ platform.name }}_{{ editor }}:
- name : Validate (Isolation Tests) Package {{ package.name }} - {{ editor }} on {{ platform.name }}
- agent:
- type: {{ platform.type }}
- image: {{ platform.image }}
- flavor: {{ platform.flavor}}
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - {% if platform.name == "ubuntu" %}DISPLAY=:0 {% endif %}upm-ci project test -u {{ editor }} --type isolation-tests --project-path {{ project.path }} --package-filter {{ package.name }} --platform editmode
- artifacts:
- logs:
- paths:
- - "upm-ci~/test-results/**/*"
- dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
-{% endfor -%}
-{% endfor -%}
-
-publish_{{ project.name }}_{{ package.name }}:
- name: Publish Project {{project.name }} - Package {{ package.name }} to Internal Registry
- agent:
- type: Unity::VM
- image: package-ci/win10:v4
- flavor: b1.large
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - upm-ci package publish --package-path {{ package.path }}
- artifacts:
- artifacts:
- paths:
- - "upm-ci~/packages/*.tgz"
- dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
- - .yamato/project-publish.yml#validate_{{ package.name }}_{{ test_platforms.first.name }}_{{ validation_editor }}
- - .yamato/project-publish.yml#publish_{{ project.name }}_{{ package.name }}_dry_run
-
-publish_{{ project.name }}_{{ package.name }}_dry_run:
- name: Publish Project {{project.name }} - Package {{ package.name }} to Internal Registry (dry-run)
- agent:
- type: Unity::VM
- image: package-ci/win10:v4
- flavor: b1.large
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - upm-ci package publish --package-path {{ package.path }} --dry-run
- artifacts:
- artifacts:
- paths:
- - "upm-ci~/packages/*.tgz"
- dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
-{% for editor in project.test_editors -%}
-{% for platform in test_platforms -%}
- - .yamato/project-publish.yml#validate_{{ package.name }}_{{ platform.name }}_{{ editor }}
-{% endfor -%}
-{% endfor -%}
-
-{% endfor -%}
-{% endif -%}
-{% endfor -%}
diff --git a/.yamato/project-standards.yml b/.yamato/project-standards.yml
index 64cf1ecb3e..6a70daf149 100644
--- a/.yamato/project-standards.yml
+++ b/.yamato/project-standards.yml
@@ -1,20 +1,53 @@
-{% metadata_file .yamato/project.metafile %}
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---
-standards_{{ projects.first.name }}:
- name: Standards Check {{ projects.first.name }}
+
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for validating project compliance with NGO coding standards and conventions
+ # Standards validation includes:
+ # Code formatting compliance
+ # Project structure validation
+ # Coding convention adherence
+ # Solution file synchronization
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs configurations are generated using nested loops through:
+ # 1. For all NGO projects (testproject, testproject-tools-interation, minimalproject)
+ # 2. For default platform only (Ubuntu) since standards would not vary between platforms (no need for checks on more platforms)
+ # 3. For default editor version (trunk) since standards would not vary between editors (no need for checks on more editors)
+
+# TECHNICAL CONSTRAINTS---------------------------------------------------------------
+ # Requires .NET SDK installed (should be preinstalled on the image so we just check for version)
+ # Needs Unity Editor for solution synchronization
+ # Uses custom standards validation tool (netcode.standards)
+ # Generates no test artifacts (pass/fail only). Eventual failure will be visible in the logs
+
+# QUALITY THOUGHTS--------------------------------------------------------------------
+ # While testproject validation would be sufficient, since it validates both project and package (where package is our main concern) jobs for all projects are being generated to ensure that we conform to quality standards in all projects.
+ # TODO: consider modifying the approach and adding checks for minimal supported editor. In case of NGOv1.X it has proven to yield different results (But since NGOv2.X support starts from 6000.0 editor it's not that time pressuring)
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+
+#------------------------------------------------------------------------------------
+
+{% for project in projects.all -%}
+{% for platform in test_platforms.default -%}
+{% for editor in validation_editors.default -%}
+standards_{{ platform.name }}_{{ project.name }}_{{ editor }}:
+ name: Standards Check - NGO {{ project.name }} [{{ platform.name }}, {{ editor }}]
agent:
- type: Unity::VM
- image: desktop/logging-testing-linux:v0.1.2-926285
- flavor: b1.large
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
commands:
+ # .NET environment setup. Ensures required .NET SDK and formatting tools are available
- dotnet --version
- dotnet format --version
- - sudo add-apt-repository -y ppa:deadsnakes/ppa
- - sudo apt update
- - sudo apt install -y python3.9
- - pip3 config set global.index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip3 install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip3 install unity-downloader-cli --upgrade
- - unity-downloader-cli -u {{ projects.first.test_editors.first }} -c editor --wait --fast
- - .Editor/Unity -batchmode -nographics -logFile - -executeMethod Packages.Rider.Editor.RiderScriptEditor.SyncSolution -projectPath {{ projects.first.path }} -quit
- - dotnet run --project dotnet-tools/netcode.standards -- --project={{ projects.first.path }} --check
+
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c editor {% if platform.name == "mac" %} --arch arm64 {% endif %} # For macOS we use ARM64 models. Downloads basic editor
+ - .Editor/Unity -batchmode -nographics -logFile - -executeMethod Packages.Rider.Editor.RiderScriptEditor.SyncSolution -projectPath {{ project.path }} -quit # This command is used to invoke Unity in a "headless" mode. It's used to sync the project
+ - dotnet run --project=dotnet-tools/netcode.standards -- --project={{ project.path }} --check # Runs standards check
+{% endfor -%}
+{% endfor -%}
+{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/project-tests.yml b/.yamato/project-tests.yml
index 0b03a2d7bb..a39f957480 100644
--- a/.yamato/project-tests.yml
+++ b/.yamato/project-tests.yml
@@ -1,33 +1,53 @@
-{% metadata_file .yamato/project.metafile %}
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---
-# For every platform and editor version, run its project tests without
-# running package tests too since they are handled on their respective
-# jobs
-{% for project in projects -%}
-{% for editor in project.test_editors -%}
-{% for platform in test_platforms -%}
-test_{{ project.name }}_{{ editor }}_{{ platform.name }}:
- name : {{ project.name }} project tests - {{ editor }} on {{ platform.name }}
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job executes project-specific tests in Unity Editor context
+ # Those tests cover both PlayMode and EditMode tests from project test assemblies
+ # NGO package tests are NOT being executed within this job (those are handled in separate package test jobs)
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs configurations are generated using nested loops through:
+ # 1. For all projects WITH TESTS (filtered by has_tests flag) (testproject, testproject-tools-interation) [For more info look into project.metafile configuration]
+ # 2. For all desktop platforms (Windows, Ubuntu, macOS)
+ # 3. For all supported Unity Editor versions (for NGOv2.X this means 6000.0+ editors)
+
+# TECHNICAL CONSIDERATIONS---------------------------------------------------------------
+ # This job runs in Editor context only (no player builds is required)
+ # No scripting backend variations needed (Editor context)
+ # Architecture variations not applicable (Editor context)
+ # Requires project packaging as prerequisite (dependency job)
+
+# QUALITY CONSIDERATIONS--------------------------------------------------------------------
+ # TODO: Currently upm-ci is being used but in the future it will be replaced by upm-pvp
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+
+#------------------------------------------------------------------------------------
+
+{% for project in projects.all -%}
+{% if project.has_tests == "true" -%}
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.all -%}
+test_{{ project.name }}_{{ platform.name }}_{{ editor }}:
+ name : Project Test - NGO {{ project.name }} [{{ platform.name }}, {{ editor }}]
agent:
type: {{ platform.type }}
image: {{ platform.image }}
- flavor: {{ platform.flavor}}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - pip config set global.index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --upgrade
- - unity-downloader-cli -u {{ editor }} -c editor -w --fast
- - {% if platform.name == "ubuntu" %}DISPLAY=:0 && {% endif %}upm-ci project test -u {{ editor }} --project-path {{ project.path }} --type project-tests
+ - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm # upm-ci is not preinstalled on the image so we need to download it
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor {% if platform.name == "mac" %} --arch arm64 {% endif %} # For macOS we use ARM64 models. Installing basic editor for tests execution
+ - upm-ci project test -u {{ editor }} --project-path {{ project.path }} --type project-tests --extra-utr-arg="--reruncount=1 --clean-library-on-rerun" # project tests execution via upm-ci
artifacts:
logs:
paths:
- "upm-ci~/test-results/**/*"
dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
-
+ - .yamato/project-pack.yml#project_pack_-_{{ project.name }}_{{ platform.name }}
{% endfor -%}
{% endfor -%}
-{% endfor -%}
-
+{% endif -%}
+{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/project-updated-dependencies-test.yml b/.yamato/project-updated-dependencies-test.yml
index bd39d49db0..19ae953e27 100644
--- a/.yamato/project-updated-dependencies-test.yml
+++ b/.yamato/project-updated-dependencies-test.yml
@@ -1,59 +1,48 @@
-{% metadata_file .yamato/project.metafile %}
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---
-# Go through all platforms, editors and packages in the metadata
-# to generate its independent package tests and validation tests.
-# The idea is to only run validation once per package and not mix.
-# the results with package tests
-{% for package in projects.first.packages -%}
-{% for editor in projects.first.test_editors -%}
-{% for platform in test_platforms -%}
-dependency_{{ projects.first.name }}_{{ package.name }}_{{ platform.name }}_{{ editor }}:
- name : Dependency Test of Project {{ projects.first.name }} - Package {{ package.name }} - {{ editor }} on {{ platform.name }}
+
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible fo validating package compatibility with latest dependency versions.
+ # This helps detect potential breaking changes from dependency updates early
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs configurations are generated using nested loops through:
+ # 1. For all projects (testproject, minimalproject, testproject-tools-integration).
+ # 2. For all desktop platforms (Win, Ubuntu, Mac)
+ # 3. For all supported editors (For NGOv2.X it means 6000+)
+
+# TECHNICAL CONSIDERATIONS----------------------------------------------------------------
+ # This job requires successful project packaging before execution (job dependency)
+ # This job tests only NGO package dependencies (com.unity.netcode.gameobjects)
+ # The results are being generated in upm-ci~/test-results directory (specific of upm-ci)
+
+# QUALITY CONSIDERATIONS---------------------------------------------------------------------
+ # TODO: Currently upm-ci is being used but in the future it will be replaced by upm-pvp
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+
+#--------------------------------------------------------------------------------------
+
+{% for project in projects.all -%}
+{% for platform in test_platforms.desktop -%}
+{% for editor in validation_editors.all -%}
+updated-dependencies_{{ project.name }}_NGO_{{ platform.name }}_{{ editor }}:
+ name : Updated Dependencies Test - NGO {{ project.name }} [{{ platform.name }}, {{ editor }}]
agent:
type: {{ platform.type }}
image: {{ platform.image }}
- flavor: {{ platform.flavor}}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - upm-ci project test -u {{ editor }} --project-path {{ projects.first.path }} --type updated-dependencies-tests --package-filter {{ package.name }}
+ - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm # upm-ci is not preinstalled on the image so we need to download it
+ - upm-ci project test -u {{ editor }} --project-path {{ project.path }} --type updated-dependencies-tests --package-filter com.unity.netcode.gameobjects
artifacts:
logs:
paths:
- "upm-ci~/test-results/**/*"
- triggers:
- recurring:
- - branch: master
- frequency: 20 * * ?
dependencies:
- - path: .yamato/project-pack.yml#pack_{{ projects.first.name }}
- rerun: always
-
-{% endfor -%}
+ - .yamato/project-pack.yml#project_pack_-_{{ project.name }}_{{ platform.name }}
{% endfor -%}
{% endfor -%}
-
-dependency_test_trigger_{{ projects.first.name }}:
- name: Project {{ projects.first.name }} Dependency Tests Trigger
- agent:
- type: Unity::VM
- image: package-ci/ubuntu-22.04:v4
- flavor: b1.small
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - upm-ci project izon -d --project-path {{ projects.first.path }}
- artifacts:
- logs:
- paths:
- - "upm-ci~/test-results/**/*"
- triggers:
- recurring:
- - branch: master
- frequency: 22 * * ?
- dependencies:
-{% for package in projects.first.packages -%}
-{% for editor in projects.first.test_editors -%}
-{% for platform in test_platforms -%}
- - .yamato/project-updated-dependencies-test.yml#dependency_{{ projects.first.name }}_{{ package.name }}_{{ platform.name }}_{{ editor }}
-{% endfor -%}
{% endfor -%}
-{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/project.metafile b/.yamato/project.metafile
index c0ec992fc0..a04afbc533 100644
--- a/.yamato/project.metafile
+++ b/.yamato/project.metafile
@@ -1,83 +1,189 @@
-validation_editor: 2021.3
-mobile_validation_editor: 2021.3
+# DESCRIPTION-----------------------------------------------------------------------------------------------------------------
+# This file is the central configuration file defining test environments, platforms, projects, editors and other parameters used.
+# Data from this file is used to generate CI pipeline configurations through templating in other .yamato/ files.
+# This provides consistent environment definitions across all CI jobs. It's easier to modify values in central place (for example image reference) than having to modify every job
-# Platforms that will be tested. The first entry in this array will also
-# be used for validation
-test_platforms:
- - name: win
- type: Unity::VM
- image: package-ci/win10:v4
- flavor: b1.large
- pathsep: \
- standalone: StandaloneWindows64
- editorpath: .Editor\Unity.exe
- utr: .\utr.bat
- - name: mac
- type: Unity::VM::osx
- image: package-ci/macos-13:v4
- pathsep: /
- standalone: StandaloneOSX
- flavor: b1.large
- editorpath: .Editor/Unity.app/Contents/MacOS/Unity
- utr: ./utr
- - name: ubuntu
- type: Unity::VM
- image: package-ci/ubuntu-22.04:v4
- flavor: b1.large
- pathsep: /
- standalone: StandaloneLinux64
- editorpath: .Editor/Unity
- utr: ./utr
+# VALUE MEANING----------------------------------------------------------------------------------------------------------------------------
+# Usual fields being defined are
+ # name --> Identifier used to distinguish different configurations in the CI pipeline
+ # type --> Specifies the Bokken agent type (e.g., Unity::VM, Unity::VM::osx, Unity::mobile::shield)
+ # image --> Defines the package-ci Bokken image to use for the environment (e.g., package-ci/ubuntu-22.04:v4). This is basically a device configuration
+ # flavor --> Determines the VM size/resources (e.g., b1.small, b1.large, m1.mac)
+ # standalone --> Specifies the build target platform (e.g., StandaloneLinux64, Android, IOS)
+ # model --> Defines specific hardware model requirements (e.g., rtx2080, SE for iPhone SE)
+ # base --> Indicates the base operating system for build operations (e.g., win, mac)
+ # architecture --> Specifies the target CPU architecture (e.g., armv7, arm64)
-# Projects within the repository that will be tested. Name will be used
-# for job ids, so it should not contain spaces/non-supported characters
-projects:
- - name: testproject
- path: testproject
- validate: true
- publish: true
- has_tests: true
- # Packages within a project that will be tested
- packages:
- - name: com.unity.netcode.gameobjects
- path: com.unity.netcode.gameobjects
- test_editors:
- - 2021.3
- - 2022.2
- - 2023.1
- - trunk
- - name: minimalproject
- path: minimalproject
- validate: false
- publish: false
- has_tests: false
- packages:
- - name: com.unity.netcode.gameobjects
- path: com.unity.netcode.gameobjects
- test_editors:
- - 2021.3
- - name: testproject-tools-integration
- path: testproject-tools-integration
- validate: false
- publish: false
- has_tests: true
- test_editors:
- - 2021.3
- - 2022.2
- - trunk
-# Package dependencies
-dependencies:
- - name: com.unity.transport
- version: 2.0.0-pre.2
- test_editors:
- - 2022.2
- - trunk
+# SMALL AGENT CONFIGURATION---------------------------------------------------------------------------------------------------
+# The small agent was created to handle jobs that don't involve running Unity and are in general super light when it comes to resource usage (for example pack job).
+# It uses ubuntu since Linux VMs are faster and cheaper to provision than Mac or Windows Virtual Machines (VMs).
+# The b1.small flavour is nearly always sufficient for jobs that don’t involve running Unity Editor.
+small_agent_platform:
+ - name: ubuntu
+ type: Unity::VM
+ image: package-ci/ubuntu-22.04:v4
+ flavor: b1.small
+
+
+# PLATFORM CONFIGURATIONS----------------------------------------------------------------------------------------------------------------
+# test_platforms specifies platforms that project will/can be tested on.
+# For desktops we include Windows, Ubuntu and Mac, for mobiles we include Android and iOS, for consoles we include ps4, ps5, switch, xbox360 and xboxOne
+# For mobile and console a split was required for build and test jobs and this is also applied for desktops for consistency (though for desktop this split is not required)
+
+
+test_platforms:
+ # Default platform is used for all basic jobs. Ubuntu was chosen since it's fastest and most available
+ default:
+ - name: ubuntu
+ type: Unity::VM
+ image: package-ci/ubuntu-22.04:v4
+ flavor: b1.large
+ standalone: StandaloneLinux64
+ desktop:
+ - name: ubuntu
+ type: Unity::VM
+ image: package-ci/ubuntu-22.04:v4
+ flavor: b1.large
+ standalone: StandaloneLinux64
+ model: rtx2080
+ - name: win
+ type: Unity::VM
+ image: package-ci/win10:v4
+ flavor: b1.large
+ standalone: StandaloneWindows64
+ model: rtx2080
+ - name: mac
+ type: Unity::VM::osx
+ image: package-ci/macos-13-arm64:v4 # ARM64 to support M1 model (below)
+ flavor: m1.mac
+ standalone: StandaloneOSX
+ model: M1 # The default model (an x64 Intel Mac VM) quite often caused a known issue of doing all the bitflips in packages resulting in failures
+ # For mobile devices there is a split between the build and run phase so there is a need of splitting specification for both
+ # TODO: For android we could consider adding ARM64 configuration
+ mobile_build:
+ - name: android
+ type: Unity::VM
+ image: package-ci/win10:v4
+ flavor: b1.large
+ standalone: Android
+ base: win
+ architecture: armv7
+ # iOS modern builds are ARM64-only, thus no testing with armv7
+ - name: ios-arm64
+ type: Unity::VM::osx
+ image: package-ci/macos-13:v4
+ flavor: m1.mac
+ standalone: IOS
+ base: mac
+ architecture: arm64
+ mobile_test:
+ - name: android
+ type: Unity::mobile::shield
+ image: package-ci/win10:v4
+ flavor: b1.large
+ standalone: Android
+ base: win
+ architecture: armv7
+ - name: ios-arm64
+ type: Unity::mobile::iPhone
+ image: package-ci/macos-13-arm64:v4
+ flavor: m1.mac
+ model: SE
+ standalone: IOS
+ base: mac
+ architecture: arm64
+ console_build:
+ - name: ps4
+ type: Unity::VM
+ image: package-ci/win10-ps4:v4
+ flavor: b1.large
+ standalone: PS4
+ - name: ps5
+ type: Unity::VM
+ image: package-ci/win10-ps5:v4
+ flavor: b1.large
+ standalone: PS5
+ - name: switch
+ type: Unity::VM
+ image: package-ci/win10-switch:v4
+ flavor: b1.large
+ standalone: Switch
+ - name: GameCoreXboxOne
+ type: Unity::VM
+ image: package-ci/win10-xbox:v4
+ flavor: b1.large
+ standalone: GameCoreXboxOne
+ - name: GameCoreScarlett
+ type: Unity::VM
+ image: package-ci/win10-xbox:v4
+ flavor: b1.large
+ standalone: GameCoreScarlett
+ console_test:
+ - name: ps4
+ type: Unity::console::ps4
+ image: package-ci/win10-ps4:v4
+ flavor: b1.large
+ standalone: PS4
+ - name: ps5
+ type: Unity::console::ps5
+ image: package-ci/win10-ps5:v4
+ flavor: b1.large
+ standalone: PS5
+ - name: switch
+ type: Unity::console::switch
+ image: package-ci/win10-switch:v4
+ flavor: b1.large
+ standalone: Switch
+ base: win
+ - name: GameCoreXboxOne
+ type: Unity::console::xbox
+ image: package-ci/win10-xbox:v4
+ flavor: b1.large
+ standalone: GameCoreXboxOne
+ - name: GameCoreScarlett
+ type: Unity::console::scarlett
+ image: package-ci/win10-xbox:v4
+ flavor: b1.large
+ standalone: GameCoreScarlett
+
+# EDITOR CONFIGURATIONS-------------------------------------------------------------------------------
+# Editors to be used for testing. NGOv2.X official support started from 6000.0 editor
+# TODO: When a new editor will be released it should be added to this list
+
+validation_editors:
+ default:
+ - trunk
+ all:
+ - 6000.0
+ - 6000.1
+ - trunk
+
+
+# Scripting backends used by Standalone RunTimeTests---------------------------------------------------
-# Scripting backends used by Standalone Playmode Tests
scripting_backends:
- mono
- il2cpp
-# Images with build-tools installed required for Standalone Tests - IL2CPP
-win_il2cpp_test_image: dots-player/windows10:latest
+
+# PROJECTS CONFIGURATIONS-------------------------------------------------------------------------------
+# Projects within the repository that will be tested/build.
+# The default project should be used for general validation, code coverage and other tests where choice of project should not matter (because we are interested in NGO package)
+# has_tests --> describes if projects contains any tests to run.
+
+projects:
+ default:
+ - name: testproject
+ path: testproject
+ has_tests: true
+ all:
+ - name: testproject
+ path: testproject
+ has_tests: true
+ - name: minimalproject
+ path: minimalproject
+ has_tests: false
+ - name: testproject-tools-integration
+ path: testproject-tools-integration
+ has_tests: true
\ No newline at end of file
diff --git a/.yamato/standalone-project-tests.yml b/.yamato/standalone-project-tests.yml
deleted file mode 100644
index 578d52be03..0000000000
--- a/.yamato/standalone-project-tests.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-{% metadata_file .yamato/project.metafile %}
----
-
-{% for project in projects -%}
-{% if project.has_tests == "true" -%}
-{% for editor in project.test_editors -%}
-{% for platform in test_platforms -%}
-{% for backend in scripting_backends -%}
-standalone_tests_{{ project.name }}_{{ backend }}_{{ editor }}_{{ platform.name }}:
- name : Standalone Tests - {{ project.name }} - [{{ backend }}, {{ platform.name }}, {{ editor }}]
- agent:
- type: {{ platform.type }}{% if platform.name == "ubuntu" %}::GPU{% endif %}
-{% if platform.name == "ubuntu" %} model: rtx2080{% endif %}
- image: {% if platform.name == 'win' and backend == 'il2cpp' %}{{ win_il2cpp_test_image }} {% else %} {{ platform.image }} {% endif %}
- flavor: {{ platform.flavor}}
- commands:
- - npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
- - pip config set global.index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --upgrade
- - curl -s https://artifactory-slo.bf.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr{% if platform.name == "win" %}.bat{% endif %} --output utr{% if platform.name == "win" %}.bat{% endif %}
-{% if platform.name != "win" %}
- - chmod +x ./utr
-{% endif %}
- - unity-downloader-cli -u {{ editor }} -c Editor {% if backend == "il2cpp" %} -c il2cpp{% endif %} --fast --wait
- - {% if platform.name != "win" %}./{% endif %}utr --suite=playmode --platform={{ platform.standalone }} --editor-location=.Editor --testproject=testproject --player-save-path=build/players --artifacts_path=build/logs --scripting-backend={{ backend }} --build-only --testfilter=Unity.Netcode.RuntimeTests --extra-editor-arg=-batchmode --extra-editor-arg=-nographics
- - |
- {% if platform.name == "win" %}set{% endif %}{% if platform.name != "win" %}export{% endif %} UTR_VERSION=0.12.0
- {% if platform.name != "win" %}./{% endif %}utr --suite=playmode --platform={{ platform.standalone }} --player-load-path=build/players --artifacts_path=build/test-results --scripting-backend={{ backend }} --testfilter=Unity.Netcode.RuntimeTests --playergraphicsapi=Null
- artifacts:
- logs:
- paths:
- - "upm-ci~/test-results/**/*"
- - "build/test-results/**"
- dependencies:
- - .yamato/project-pack.yml#pack_{{ project.name }}
-
-{% endfor -%}
-{% endfor -%}
-{% endfor -%}
-{% endif -%}
-{% endfor -%}
\ No newline at end of file
diff --git a/.yamato/webgl-build.yml b/.yamato/webgl-build.yml
index acca422b8f..881c433cbe 100644
--- a/.yamato/webgl-build.yml
+++ b/.yamato/webgl-build.yml
@@ -1,41 +1,58 @@
-{% metadata_file .yamato/project.metafile %}
+{% metadata_file .yamato/project.metafile %} # All configuration that is used to create different configurations (used in for loops) is taken from this file.
---
-{% for project in projects -%}
-{% if project.name == "testproject" -%}
-{% for editor in project.test_editors -%}
-build_{{ project.name }}_tests_{{ editor }}_webgl:
- name: Build {{ project.name }} Tests - {{ editor }} - WebGL
+# DESCRIPTION--------------------------------------------------------------------------
+ # This job is responsible for validating a successful building of a player on WebGl standalone platform.
+ # This job WILL NOT execute any tests, we only validate the building process.
+ # This is because WebGL runs in browser and for tests to be executed we would need to consider having a web server, browser automation and overall complex test setup which currently we don't have.
+
+# CONFIGURATION STRUCTURE--------------------------------------------------------------
+ # Jobs configurations are generated using nested loops through:
+ # 1. For the default project (project is used only as a context for the build).
+ # 2. For all desktop platforms (Windows, Ubuntu, macOS)
+ # 3. For all supported Unity Editor versions (For NGOv2.X it means 6000+)
+
+# TECHNICAL CONSIDERATIONS----------------------------------------------------------------
+ # WebGL requires IL2CPP scripting backend (Mono is not supported)
+ # We are not using ARM64 architectures since we only perform a build action. x64 architectures are preferred for build phase (in order to optimize available resource usage)
+ # We only perform build validation (no runtime testing)
+
+# QUALITY CONSIDERATIONS--------------------------------------------------------------------
+ # In the future we could try to implement an infrastructure to run test in webgl context but this could be quite complicated and would need to be evaluated if it's worth it
+ # To see where this job is included (in trigger job definitions) look into _triggers.yml file
+ # WebGL jobs were timing up more often in develop-2.0.0 branch (especially on trunk) so we increased the timeout from 1800 to 3600. We should investigate why it times more often in develop-2.0.0/ubuntu/trunk
+
+#--------------------------------------------------------------------------------------
+
+{% for project in projects.default -%}
+{% for platform in test_platforms.desktop -%}
+{% if platform.name != "mac" -%} # There is an error about "Light baking could not be started because no valid OpenCL device could be found". Tracked in MTT-11726
+{% for editor in validation_editors.all -%}
+webgl_build_{{ project.name }}_{{ platform.name }}_{{ editor }}:
+ name: WebGl Build - {{ project.name }} [{{ platform.name }}, {{ editor }}, il2cpp]
agent:
- type: Unity::VM
- image: dots-ci/windows10:v1.493-auto
- flavor: b1.xlarge
+ type: {{ platform.type }}
+ image: {{ platform.image }}
+ flavor: {{ platform.flavor }}
+{% if platform.model %}
+ model: {{ platform.model }} # This is set only in platforms where we want non-default model to use (more information in project.metafile)
+{% endif %}
commands:
- - pip config set global.index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple
- - pip install unity-downloader-cli --upgrade
- - curl -s https://artifactory-slo.bf.unity3d.com/artifactory/unity-tools-local/utr-standalone/utr.bat --output utr.bat
- - python .yamato/disable-burst-if-requested.py --project-path testproject --platform WebGL
- - unity-downloader-cli -u {{ editor }} -c editor -c webgl -c il2cpp -w --fast
- - |
- set UTR_VERSION=0.12.0
- utr.bat --artifacts_path=artifacts --timeout=1800 --testproject={{ project.name }} --editor-location=.Editor --suite=playmode --platform=WebGL --build-only --player-save-path=build/players --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --scripting-backend=il2cpp --extra-editor-arg="-cloudEnvironment staging"
+ - unity-downloader-cli --fast --wait -u {{ editor }} -c Editor -c webgl -c il2cpp {% if platform.name == "mac" %} --arch arm64 {% endif %} # For macOS we use ARM64 models. Downloading the editor with additional webgl and il2cpp components
+
+ # The following step builds the player with defined options such as:
+ # Suite parameter if defined since it's a mandatory field to define which test suite should be used, but it doesn't matter in this case since we won't run any tests (--suite)
+ # Editor is run in batchmode, which means that Unity runs command line arguments without the need for human interaction. It also suppresses pop-up windows that require human interaction (such as the Save Scene window). We should always run Unity in batch mode when using command line arguments, because it allows automation to run without interruption. (--extra-editor-arg=-batchmode)
+ # Engine is initialized in ‘nographics’ mode since we don't need any graphics for this case (--extra-editor-arg=-nographics)
+ # In case of failure the job will be rerunned once (--reruncount=1) with clean library (--clean-library-on-rerun)
+ # This will perform only building phase (--build-only) with a timeout of 3m (--timeout=1800)
+ - UnifiedTestRunner --suite=playmode --platform=WebGL --scripting-backend=il2cpp --testproject={{ project.path }} --editor-location=.Editor --artifacts_path=artifacts --player-save-path=build/players --extra-editor-arg=-batchmode --extra-editor-arg=-nographics --reruncount=1 --clean-library-on-rerun --build-only --timeout=3600
artifacts:
logs:
paths:
- - '*.log'
- - '*.xml'
- - artifacts/**/*
- - testproject/Logs/**
- - testproject/Library/*.log
- - testproject/*.log
- - testproject/Builds/*.log
- - build/test-results/**
- - artifacts/**
- - build/players/**
- variables:
- CI: true
- ENABLE_BURST_COMPILATION: False
+ - "artifacts/**/*"
+ - "build/players/**/*"
{% endfor -%}
{% endif -%}
-{% endfor -%}
\ No newline at end of file
+{% endfor -%}
+{% endfor -%}
diff --git a/.yamato/wrench/api-validation-jobs.yml b/.yamato/wrench/api-validation-jobs.yml
new file mode 100644
index 0000000000..7a6c445e71
--- /dev/null
+++ b/.yamato/wrench/api-validation-jobs.yml
@@ -0,0 +1,58 @@
+# Auto-generated by Recipe Engine, do not modify manually.
+# This job is generated by the wrench recipe engine module, see find the docs here: http://Go/ii2fb
+all_api_validation_jobs:
+ name: All API Validation Jobs
+ dependencies:
+ - path: .yamato/wrench/api-validation-jobs.yml#api_validation_-_netcode_gameobjects_-_6000_0_-_windows
+
+# upm-ci validation tests for API Validation - netcode.gameobjects - 6000.0 - windows (6000.0 - Windows).
+api_validation_-_netcode_gameobjects_-_6000_0_-_windows:
+ name: API Validation - netcode.gameobjects - 6000.0 - windows
+ agent:
+ image: package-ci/win10:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.0 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/PackageJsonCondersor.py
+ timeout: 1
+ retries: 0
+ - command: upm-ci package test -u .Editor --package-path com.unity.netcode.gameobjects --type vetting-tests || exit 0
+ timeout: 30
+ retries: 0
+ - command: python PythonScripts/parse_upm_ci_results.py --package-path=com.unity.netcode.gameobjects
+ timeout: 2
+ retries: 0
+ after:
+ - command: .yamato\generated-scripts\infrastructure-instability-detection-win.cmd
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ browsable: onNonSuccess
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
diff --git a/.yamato/wrench/package-pack-jobs.yml b/.yamato/wrench/package-pack-jobs.yml
new file mode 100644
index 0000000000..6413921ce7
--- /dev/null
+++ b/.yamato/wrench/package-pack-jobs.yml
@@ -0,0 +1,28 @@
+# Auto-generated by Recipe Engine, do not modify manually.
+# This job is generated by the wrench recipe engine module, see find the docs here: http://Go/ii2fb
+
+# Pack Netcode for GameObjects
+package_pack_-_netcode_gameobjects:
+ name: Package Pack - netcode.gameobjects
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: upm-ci package pack --package-path com.unity.netcode.gameobjects
+ - command: cp upm-ci~/packages/packages.json upm-ci~/packages/com.unity.netcode.gameobjects_packages.json
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh
+ artifacts:
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ variables:
+ UPMCI_ACK_LARGE_PACKAGE: 1
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
diff --git a/.yamato/wrench/preview-a-p-v.yml b/.yamato/wrench/preview-a-p-v.yml
new file mode 100644
index 0000000000..aa9d8cc1d5
--- /dev/null
+++ b/.yamato/wrench/preview-a-p-v.yml
@@ -0,0 +1,509 @@
+# Auto-generated by Recipe Engine, do not modify manually.
+# This job is generated by the wrench recipe engine module, see find the docs here: http://Go/ii2fb
+
+# Parent Preview APV Job.
+all_preview_apv_jobs:
+ name: All Preview APV Jobs
+ dependencies:
+ - path: .yamato/wrench/preview-a-p-v.yml#preview_apv_-_6000_0_-_macos
+ - path: .yamato/wrench/preview-a-p-v.yml#preview_apv_-_6000_0_-_ubuntu
+ - path: .yamato/wrench/preview-a-p-v.yml#preview_apv_-_6000_0_-_windows
+ - path: .yamato/wrench/preview-a-p-v.yml#preview_apv_-_6000_1_-_macos
+ - path: .yamato/wrench/preview-a-p-v.yml#preview_apv_-_6000_1_-_ubuntu
+ - path: .yamato/wrench/preview-a-p-v.yml#preview_apv_-_6000_1_-_windows
+ - path: .yamato/wrench/preview-a-p-v.yml#preview_apv_-_6000_2_-_macos
+ - path: .yamato/wrench/preview-a-p-v.yml#preview_apv_-_6000_2_-_ubuntu
+ - path: .yamato/wrench/preview-a-p-v.yml#preview_apv_-_6000_2_-_windows
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Functional tests for dependents found in the latest 6000.0 manifest (MacOS).
+preview_apv_-_6000_0_-_macos:
+ name: Preview APV - 6000.0 - macos
+ agent:
+ image: package-ci/macos-13:default
+ type: Unity::VM::osx
+ flavor: b1.xlarge
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.0 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/preview_apv.py --wrench-config=.yamato/wrench/wrench_config.json --editor-version=6000.0 --testsuite=editor,playmode --artifacts-path=PreviewApvArtifacts~
+ - command: echo 'Skipping Editor Manifest Validator as it is only supported on Windows'
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-mac.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ PreviewAPVResults:
+ paths:
+ - PreviewApvArtifacts~/**
+ - APVTest/**/manifest.json
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Functional tests for dependents found in the latest 6000.0 manifest (Ubuntu).
+preview_apv_-_6000_0_-_ubuntu:
+ name: Preview APV - 6000.0 - ubuntu
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.0 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/preview_apv.py --wrench-config=.yamato/wrench/wrench_config.json --editor-version=6000.0 --testsuite=editor,playmode --artifacts-path=PreviewApvArtifacts~
+ - command: echo 'Skipping Editor Manifest Validator as it is only supported on Windows'
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ PreviewAPVResults:
+ paths:
+ - PreviewApvArtifacts~/**
+ - APVTest/**/manifest.json
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Functional tests for dependents found in the latest 6000.0 manifest (Windows).
+preview_apv_-_6000_0_-_windows:
+ name: Preview APV - 6000.0 - windows
+ agent:
+ image: package-ci/win10:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: gsudo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.0 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/preview_apv.py --wrench-config=.yamato/wrench/wrench_config.json --editor-version=6000.0 --testsuite=editor,playmode --artifacts-path=PreviewApvArtifacts~
+ - command: python PythonScripts/editor_manifest_validator.py --version=6000.0 --wrench-config=.yamato/wrench/wrench_config.json
+ after:
+ - command: .yamato\generated-scripts\infrastructure-instability-detection-win.cmd
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ PreviewAPVResults:
+ paths:
+ - PreviewApvArtifacts~/**
+ - APVTest/**/manifest.json
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Functional tests for dependents found in the latest 6000.1 manifest (MacOS).
+preview_apv_-_6000_1_-_macos:
+ name: Preview APV - 6000.1 - macos
+ agent:
+ image: package-ci/macos-13:default
+ type: Unity::VM::osx
+ flavor: b1.xlarge
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.1 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/preview_apv.py --wrench-config=.yamato/wrench/wrench_config.json --editor-version=6000.1 --testsuite=editor,playmode --artifacts-path=PreviewApvArtifacts~
+ - command: echo 'Skipping Editor Manifest Validator as it is only supported on Windows'
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-mac.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ PreviewAPVResults:
+ paths:
+ - PreviewApvArtifacts~/**
+ - APVTest/**/manifest.json
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Functional tests for dependents found in the latest 6000.1 manifest (Ubuntu).
+preview_apv_-_6000_1_-_ubuntu:
+ name: Preview APV - 6000.1 - ubuntu
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.1 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/preview_apv.py --wrench-config=.yamato/wrench/wrench_config.json --editor-version=6000.1 --testsuite=editor,playmode --artifacts-path=PreviewApvArtifacts~
+ - command: echo 'Skipping Editor Manifest Validator as it is only supported on Windows'
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ PreviewAPVResults:
+ paths:
+ - PreviewApvArtifacts~/**
+ - APVTest/**/manifest.json
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Functional tests for dependents found in the latest 6000.1 manifest (Windows).
+preview_apv_-_6000_1_-_windows:
+ name: Preview APV - 6000.1 - windows
+ agent:
+ image: package-ci/win10:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: gsudo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.1 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/preview_apv.py --wrench-config=.yamato/wrench/wrench_config.json --editor-version=6000.1 --testsuite=editor,playmode --artifacts-path=PreviewApvArtifacts~
+ - command: python PythonScripts/editor_manifest_validator.py --version=6000.1 --wrench-config=.yamato/wrench/wrench_config.json
+ after:
+ - command: .yamato\generated-scripts\infrastructure-instability-detection-win.cmd
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ PreviewAPVResults:
+ paths:
+ - PreviewApvArtifacts~/**
+ - APVTest/**/manifest.json
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Functional tests for dependents found in the latest 6000.2 manifest (MacOS).
+preview_apv_-_6000_2_-_macos:
+ name: Preview APV - 6000.2 - macos
+ agent:
+ image: package-ci/macos-13:default
+ type: Unity::VM::osx
+ flavor: b1.xlarge
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.2 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/preview_apv.py --wrench-config=.yamato/wrench/wrench_config.json --editor-version=6000.2 --testsuite=editor,playmode --artifacts-path=PreviewApvArtifacts~
+ - command: echo 'Skipping Editor Manifest Validator as it is only supported on Windows'
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-mac.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ PreviewAPVResults:
+ paths:
+ - PreviewApvArtifacts~/**
+ - APVTest/**/manifest.json
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Functional tests for dependents found in the latest 6000.2 manifest (Ubuntu).
+preview_apv_-_6000_2_-_ubuntu:
+ name: Preview APV - 6000.2 - ubuntu
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.2 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/preview_apv.py --wrench-config=.yamato/wrench/wrench_config.json --editor-version=6000.2 --testsuite=editor,playmode --artifacts-path=PreviewApvArtifacts~
+ - command: echo 'Skipping Editor Manifest Validator as it is only supported on Windows'
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ PreviewAPVResults:
+ paths:
+ - PreviewApvArtifacts~/**
+ - APVTest/**/manifest.json
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Functional tests for dependents found in the latest 6000.2 manifest (Windows).
+preview_apv_-_6000_2_-_windows:
+ name: Preview APV - 6000.2 - windows
+ agent:
+ image: package-ci/win10:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: gsudo reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: npm install upm-ci-utils@stable -g --registry https://artifactory.prd.cds.internal.unity3d.com/artifactory/api/npm/upm-npm
+ timeout: 20
+ retries: 10
+ - command: unity-downloader-cli -u 6000.2 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: python PythonScripts/preview_apv.py --wrench-config=.yamato/wrench/wrench_config.json --editor-version=6000.2 --testsuite=editor,playmode --artifacts-path=PreviewApvArtifacts~
+ - command: python PythonScripts/editor_manifest_validator.py --version=6000.2 --wrench-config=.yamato/wrench/wrench_config.json
+ after:
+ - command: .yamato\generated-scripts\infrastructure-instability-detection-win.cmd
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ logs:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - upm-ci~/test-results/**/*
+ - upm-ci~/temp/*/Logs/**
+ - upm-ci~/temp/*/Library/*.log
+ - upm-ci~/temp/*/*.log
+ - upm-ci~/temp/Builds/*.log
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ PreviewAPVResults:
+ paths:
+ - PreviewApvArtifacts~/**
+ - APVTest/**/manifest.json
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
diff --git a/.yamato/wrench/promotion-jobs.yml b/.yamato/wrench/promotion-jobs.yml
new file mode 100644
index 0000000000..ddd5e5322f
--- /dev/null
+++ b/.yamato/wrench/promotion-jobs.yml
@@ -0,0 +1,247 @@
+# Auto-generated by Recipe Engine, do not modify manually.
+# This job is generated by the wrench recipe engine module, see find the docs here: http://Go/ii2fb
+
+# Publish Dry Run for netcode.gameobjects to https://artifactory-slo.bf.unity3d.com/artifactory/api/npm/upm-npm
+publish_dry_run_netcode_gameobjects:
+ name: Publish Dry Run netcode.gameobjects
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/report_valid_editors.py
+ - command: python PythonScripts/ignore_existing_package_failure.py
+ - command: python PythonScripts/run_publish_if_any_package_left.py --dry-run
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh
+ artifacts:
+ logs:
+ paths:
+ - results/UTR/**/*
+ browsable: onNonSuccess
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_0_-_macos
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.0-macos
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.0-macos
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_0_-_ubuntu
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.0-ubuntu
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.0-ubuntu
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_0_-_windows
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.0-windows
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.0-windows
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_1_-_macos
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.1-macos
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.1-macos
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_1_-_ubuntu
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.1-ubuntu
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.1-ubuntu
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_1_-_windows
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.1-windows
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.1-windows
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_2_-_macos
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.2-macos
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.2-macos
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_2_-_ubuntu
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.2-ubuntu
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.2-ubuntu
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_2_-_windows
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.2-windows
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.2-windows
+ unzip: true
+ packages:
+ ignore_artifact: true
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
+# Publish for netcode.gameobjects to https://artifactory-slo.bf.unity3d.com/artifactory/api/npm/upm-npm
+publish_netcode_gameobjects:
+ name: Publish netcode.gameobjects
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/report_valid_editors.py
+ - command: python PythonScripts/ignore_existing_package_failure.py
+ - command: python PythonScripts/run_publish_if_any_package_left.py
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh
+ artifacts:
+ logs:
+ paths:
+ - results/UTR/**/*
+ browsable: onNonSuccess
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_0_-_macos
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.0-macos
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.0-macos
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_0_-_ubuntu
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.0-ubuntu
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.0-ubuntu
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_0_-_windows
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.0-windows
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.0-windows
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_1_-_macos
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.1-macos
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.1-macos
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_1_-_ubuntu
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.1-ubuntu
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.1-ubuntu
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_1_-_windows
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.1-windows
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.1-windows
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_2_-_macos
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.2-macos
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.2-macos
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_2_-_ubuntu
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.2-ubuntu
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.2-ubuntu
+ unzip: true
+ packages:
+ ignore_artifact: true
+ - path: .yamato/wrench/validation-jobs.yml#validate_-_netcode_gameobjects_-_6000_2_-_windows
+ specific_options:
+ UTR:
+ location: results/UTR/validate-netcode.gameobjects-6000.2-windows
+ unzip: true
+ pvp-results:
+ location: results/pvp/validate-netcode.gameobjects-6000.2-windows
+ unzip: true
+ packages:
+ ignore_artifact: true
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
diff --git a/.yamato/wrench/publish-trigger.yml b/.yamato/wrench/publish-trigger.yml
new file mode 100644
index 0000000000..bd7db9bc73
--- /dev/null
+++ b/.yamato/wrench/publish-trigger.yml
@@ -0,0 +1,12 @@
+# Auto-generated by Recipe Engine, do not modify manually.
+# This job is generated by the wrench recipe engine module, see find the docs here: http://Go/ii2fb
+all_promotion_related_jobs_promotiontrigger:
+ name: All Promotion Related Jobs PromotionTrigger
+ dependencies:
+ - path: .yamato/wrench/api-validation-jobs.yml#all_api_validation_jobs
+ - path: .yamato/wrench/preview-a-p-v.yml#all_preview_apv_jobs
+ - path: .yamato/wrench/promotion-jobs.yml#publish_dry_run_netcode_gameobjects
+ triggers:
+ expression: push.branch match "^release/.*"
+ cancel_old_ci: true
+
diff --git a/.yamato/wrench/recipe-regeneration.yml b/.yamato/wrench/recipe-regeneration.yml
new file mode 100644
index 0000000000..7cec6a1ea8
--- /dev/null
+++ b/.yamato/wrench/recipe-regeneration.yml
@@ -0,0 +1,30 @@
+# Auto-generated by Recipe Engine, do not modify manually.
+# This job is generated by the wrench recipe engine module, see find the docs here: http://Go/ii2fb
+
+# Test that Generated Wrench Jobs are up to date.
+test_-_wrench_jobs_up_to_date:
+ name: Test - Wrench Jobs up to date
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: dotnet run --project Tools\CI\NGO.Cookbook.csproj
+ - command: |-
+ if [ -n "$(git status --porcelain -- .yamato/wrench)" ]; then
+ git status
+ echo "Your repo is not clean - diff output:"
+ git diff
+ echo "You must run recipe generation after updating recipes to update the generated YAML!"
+ echo "Run 'dotnet run --project Tools\CI\NGO.Cookbook.csproj' from the root of your repository to regenerate all job definitions created by wrench."
+ exit 1
+ fi
+ variables:
+ DOTNET_CLI_TELEMETRY_OPTOUT: 1
+ triggers:
+ expression: push.branch match "^release/.*"
+ cancel_old_ci: true
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+
diff --git a/.yamato/wrench/validation-jobs.yml b/.yamato/wrench/validation-jobs.yml
new file mode 100644
index 0000000000..968b3da71d
--- /dev/null
+++ b/.yamato/wrench/validation-jobs.yml
@@ -0,0 +1,597 @@
+# Auto-generated by Recipe Engine, do not modify manually.
+# This job is generated by the wrench recipe engine module, see find the docs here: http://Go/ii2fb
+
+# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.0 - macos (6000.0 - MacOS).
+validate_-_netcode_gameobjects_-_6000_0_-_macos:
+ name: Validate - netcode.gameobjects - 6000.0 - macos
+ agent:
+ image: package-ci/macos-13:default
+ type: Unity::VM::osx
+ flavor: b1.xlarge
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: unity-downloader-cli -u 6000.0 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: upm-pvp create-test-project test-netcode.gameobjects --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ timeout: 10
+ retries: 1
+ - command: echo No internal packages to add.
+ - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp
+ timeout: 40
+ retries: 0
+ - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 5
+ retries: 0
+ - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 10
+ retries: 0
+ - command: UnifiedTestRunner --testproject=test-netcode.gameobjects --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts --suite=Editor --suite=Playmode "--ff={ops.upmpvpevidence.enable=true}"
+ timeout: 40
+ retries: 1
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-mac.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ UTR:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - artifacts/**/*
+ - test-netcode.gameobjects/Logs/**
+ - test-netcode.gameobjects/Library/*.log
+ - test-netcode.gameobjects/*.log
+ - test-netcode.gameobjects/Builds/*.log
+ - build/test-results/**
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+ labels:
+ - Packages:netcode.gameobjects
+
+# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.0 - ubuntu (6000.0 - Ubuntu).
+validate_-_netcode_gameobjects_-_6000_0_-_ubuntu:
+ name: Validate - netcode.gameobjects - 6000.0 - ubuntu
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: unity-downloader-cli -u 6000.0 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: upm-pvp create-test-project test-netcode.gameobjects --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ timeout: 10
+ retries: 1
+ - command: echo No internal packages to add.
+ - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp
+ timeout: 40
+ retries: 0
+ - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 5
+ retries: 0
+ - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 10
+ retries: 0
+ - command: UnifiedTestRunner --testproject=test-netcode.gameobjects --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts --suite=Editor --suite=Playmode "--ff={ops.upmpvpevidence.enable=true}"
+ timeout: 40
+ retries: 1
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ UTR:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - artifacts/**/*
+ - test-netcode.gameobjects/Logs/**
+ - test-netcode.gameobjects/Library/*.log
+ - test-netcode.gameobjects/*.log
+ - test-netcode.gameobjects/Builds/*.log
+ - build/test-results/**
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+ labels:
+ - Packages:netcode.gameobjects
+
+# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.0 - windows (6000.0 - Windows).
+validate_-_netcode_gameobjects_-_6000_0_-_windows:
+ name: Validate - netcode.gameobjects - 6000.0 - windows
+ agent:
+ image: package-ci/win10:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: unity-downloader-cli -u 6000.0 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: upm-pvp create-test-project test-netcode.gameobjects --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ timeout: 10
+ retries: 1
+ - command: echo No internal packages to add.
+ - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp
+ timeout: 40
+ retries: 0
+ - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 5
+ retries: 0
+ - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 10
+ retries: 0
+ - command: UnifiedTestRunner.exe --testproject=test-netcode.gameobjects --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts --suite=Editor --suite=Playmode "--ff={ops.upmpvpevidence.enable=true}"
+ timeout: 40
+ retries: 1
+ after:
+ - command: .yamato\generated-scripts\infrastructure-instability-detection-win.cmd
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ UTR:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - artifacts/**/*
+ - test-netcode.gameobjects/Logs/**
+ - test-netcode.gameobjects/Library/*.log
+ - test-netcode.gameobjects/*.log
+ - test-netcode.gameobjects/Builds/*.log
+ - build/test-results/**
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+ labels:
+ - Packages:netcode.gameobjects
+
+# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.1 - macos (6000.1 - MacOS).
+validate_-_netcode_gameobjects_-_6000_1_-_macos:
+ name: Validate - netcode.gameobjects - 6000.1 - macos
+ agent:
+ image: package-ci/macos-13:default
+ type: Unity::VM::osx
+ flavor: b1.xlarge
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: unity-downloader-cli -u 6000.1 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: upm-pvp create-test-project test-netcode.gameobjects --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ timeout: 10
+ retries: 1
+ - command: echo No internal packages to add.
+ - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp
+ timeout: 40
+ retries: 0
+ - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 5
+ retries: 0
+ - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 10
+ retries: 0
+ - command: UnifiedTestRunner --testproject=test-netcode.gameobjects --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts --suite=Editor --suite=Playmode "--ff={ops.upmpvpevidence.enable=true}"
+ timeout: 40
+ retries: 1
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-mac.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ UTR:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - artifacts/**/*
+ - test-netcode.gameobjects/Logs/**
+ - test-netcode.gameobjects/Library/*.log
+ - test-netcode.gameobjects/*.log
+ - test-netcode.gameobjects/Builds/*.log
+ - build/test-results/**
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+ labels:
+ - Packages:netcode.gameobjects
+
+# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.1 - ubuntu (6000.1 - Ubuntu).
+validate_-_netcode_gameobjects_-_6000_1_-_ubuntu:
+ name: Validate - netcode.gameobjects - 6000.1 - ubuntu
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: unity-downloader-cli -u 6000.1 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: upm-pvp create-test-project test-netcode.gameobjects --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ timeout: 10
+ retries: 1
+ - command: echo No internal packages to add.
+ - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp
+ timeout: 40
+ retries: 0
+ - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 5
+ retries: 0
+ - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 10
+ retries: 0
+ - command: UnifiedTestRunner --testproject=test-netcode.gameobjects --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts --suite=Editor --suite=Playmode "--ff={ops.upmpvpevidence.enable=true}"
+ timeout: 40
+ retries: 1
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ UTR:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - artifacts/**/*
+ - test-netcode.gameobjects/Logs/**
+ - test-netcode.gameobjects/Library/*.log
+ - test-netcode.gameobjects/*.log
+ - test-netcode.gameobjects/Builds/*.log
+ - build/test-results/**
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+ labels:
+ - Packages:netcode.gameobjects
+
+# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.1 - windows (6000.1 - Windows).
+validate_-_netcode_gameobjects_-_6000_1_-_windows:
+ name: Validate - netcode.gameobjects - 6000.1 - windows
+ agent:
+ image: package-ci/win10:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: unity-downloader-cli -u 6000.1 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: upm-pvp create-test-project test-netcode.gameobjects --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ timeout: 10
+ retries: 1
+ - command: echo No internal packages to add.
+ - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp
+ timeout: 40
+ retries: 0
+ - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 5
+ retries: 0
+ - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 10
+ retries: 0
+ - command: UnifiedTestRunner.exe --testproject=test-netcode.gameobjects --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts --suite=Editor --suite=Playmode "--ff={ops.upmpvpevidence.enable=true}"
+ timeout: 40
+ retries: 1
+ after:
+ - command: .yamato\generated-scripts\infrastructure-instability-detection-win.cmd
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ UTR:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - artifacts/**/*
+ - test-netcode.gameobjects/Logs/**
+ - test-netcode.gameobjects/Library/*.log
+ - test-netcode.gameobjects/*.log
+ - test-netcode.gameobjects/Builds/*.log
+ - build/test-results/**
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+ labels:
+ - Packages:netcode.gameobjects
+
+# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.2 - macos (6000.2 - MacOS).
+validate_-_netcode_gameobjects_-_6000_2_-_macos:
+ name: Validate - netcode.gameobjects - 6000.2 - macos
+ agent:
+ image: package-ci/macos-13:default
+ type: Unity::VM::osx
+ flavor: b1.xlarge
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: unity-downloader-cli -u 6000.2 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: upm-pvp create-test-project test-netcode.gameobjects --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ timeout: 10
+ retries: 1
+ - command: echo No internal packages to add.
+ - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp
+ timeout: 40
+ retries: 0
+ - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 5
+ retries: 0
+ - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 10
+ retries: 0
+ - command: UnifiedTestRunner --testproject=test-netcode.gameobjects --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts --suite=Editor --suite=Playmode "--ff={ops.upmpvpevidence.enable=true}"
+ timeout: 40
+ retries: 1
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-mac.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ UTR:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - artifacts/**/*
+ - test-netcode.gameobjects/Logs/**
+ - test-netcode.gameobjects/Library/*.log
+ - test-netcode.gameobjects/*.log
+ - test-netcode.gameobjects/Builds/*.log
+ - build/test-results/**
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+ labels:
+ - Packages:netcode.gameobjects
+
+# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.2 - ubuntu (6000.2 - Ubuntu).
+validate_-_netcode_gameobjects_-_6000_2_-_ubuntu:
+ name: Validate - netcode.gameobjects - 6000.2 - ubuntu
+ agent:
+ image: package-ci/ubuntu-20.04:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: unity-downloader-cli -u 6000.2 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: upm-pvp create-test-project test-netcode.gameobjects --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ timeout: 10
+ retries: 1
+ - command: echo No internal packages to add.
+ - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp
+ timeout: 40
+ retries: 0
+ - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 5
+ retries: 0
+ - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 10
+ retries: 0
+ - command: UnifiedTestRunner --testproject=test-netcode.gameobjects --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts --suite=Editor --suite=Playmode "--ff={ops.upmpvpevidence.enable=true}"
+ timeout: 40
+ retries: 1
+ after:
+ - command: bash .yamato/generated-scripts/infrastructure-instability-detection-linux.sh
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ UTR:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - artifacts/**/*
+ - test-netcode.gameobjects/Logs/**
+ - test-netcode.gameobjects/Library/*.log
+ - test-netcode.gameobjects/*.log
+ - test-netcode.gameobjects/Builds/*.log
+ - build/test-results/**
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+ labels:
+ - Packages:netcode.gameobjects
+
+# PVP Editor and Playmode tests for Validate - netcode.gameobjects - 6000.2 - windows (6000.2 - Windows).
+validate_-_netcode_gameobjects_-_6000_2_-_windows:
+ name: Validate - netcode.gameobjects - 6000.2 - windows
+ agent:
+ image: package-ci/win10:default
+ type: Unity::VM
+ flavor: b1.large
+ commands:
+ - command: curl https://artifactory.prd.it.unity3d.com/artifactory/stevedore-unity-internal/wrench-localapv/1-2-60_641f75ebc79901fc7eb7880e924d4adc41d99ad42d02aa320814a9e1e75463c4.zip -o wrench-localapv.zip
+ - command: 7z x -aoa wrench-localapv.zip
+ - command: pip install semver requests --index-url https://artifactory-slo.bf.unity3d.com/artifactory/api/pypi/pypi/simple
+ - command: python PythonScripts/print_machine_info.py
+ - command: unity-downloader-cli -u 6000.2 -c Editor --fast
+ timeout: 10
+ retries: 3
+ - command: upm-pvp create-test-project test-netcode.gameobjects --packages "upm-ci~/packages/*.tgz" --unity .Editor
+ timeout: 10
+ retries: 1
+ - command: echo No internal packages to add.
+ - command: upm-pvp test --unity .Editor --packages "upm-ci~/packages/*.tgz" --results upm-ci~/pvp
+ timeout: 40
+ retries: 0
+ - command: upm-pvp require "pkgprom-promote -PVP-29-2 rme" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 5
+ retries: 0
+ - command: upm-pvp require "rme PVP-160-1 supported" --results upm-ci~/pvp --exemptions upm-ci~/pvp/failures.json
+ timeout: 10
+ retries: 0
+ - command: UnifiedTestRunner.exe --testproject=test-netcode.gameobjects --editor-location=.Editor --clean-library --reruncount=1 --clean-library-on-rerun --artifacts-path=artifacts --suite=Editor --suite=Playmode "--ff={ops.upmpvpevidence.enable=true}"
+ timeout: 40
+ retries: 1
+ after:
+ - command: .yamato\generated-scripts\infrastructure-instability-detection-win.cmd
+ artifacts:
+ Crash Dumps:
+ paths:
+ - CrashDumps/**
+ packages:
+ paths:
+ - upm-ci~/packages/**/*
+ pvp-results:
+ paths:
+ - upm-ci~/pvp/**/*
+ browsable: onDemand
+ UTR:
+ paths:
+ - '*.log'
+ - '*.xml'
+ - artifacts/**/*
+ - test-netcode.gameobjects/Logs/**
+ - test-netcode.gameobjects/Library/*.log
+ - test-netcode.gameobjects/*.log
+ - test-netcode.gameobjects/Builds/*.log
+ - build/test-results/**
+ browsable: onDemand
+ dependencies:
+ - path: .yamato/wrench/package-pack-jobs.yml#package_pack_-_netcode_gameobjects
+ variables:
+ UPMPVP_ACK_UPMPVP_DOES_NO_API_VALIDATION: 1
+ UPMPVP_CONTEXT_WRENCH: 0.10.45.0
+ metadata:
+ Job Maintainers: '#rm-packageworks'
+ Wrench: 0.10.45.0
+ labels:
+ - Packages:netcode.gameobjects
+
diff --git a/.yamato/wrench/wrench_config.json b/.yamato/wrench/wrench_config.json
new file mode 100644
index 0000000000..b25762e36c
--- /dev/null
+++ b/.yamato/wrench/wrench_config.json
@@ -0,0 +1,37 @@
+{
+ "schema_version": 0.7,
+ "packages": {
+ "com.unity.netcode.gameobjects": {
+ "directory": "com.unity.netcode.gameobjects/",
+ "prePackCommands": [],
+ "preTestCommands": {
+ "MacOS": [],
+ "Ubuntu": [],
+ "Windows": []
+ },
+ "InternalOnly": false,
+ "NeverPublish": false,
+ "MaxEditorVersion": "",
+ "coverageEnabled": false,
+ "coverageCommands": [
+ "generateAdditionalMetrics;generateHtmlReport;assemblyFilters:ASSEMBLY_NAME;pathReplacePatterns:@*,,**/PackageCache/,;sourcePaths:YAMATO_SOURCE_DIR/Packages;"
+ ],
+ "dependantsToIgnoreInPreviewApv": {}
+ }
+ },
+ "releasing_packages": [
+ "com.unity.netcode.gameobjects"
+ ],
+ "jobs_to_monitor": {
+ "com.unity.netcode.gameobjects": [
+ ".yamato/wrench/api-validation-jobs.yml#api_validation_-_netcode_gameobjects_-_6000_0_-_windows",
+ ".yamato/wrench/preview-a-p-v.yml#all_preview_apv_jobs",
+ ".yamato/wrench/promotion-jobs.yml#publish_dry_run_netcode_gameobjects"
+ ]
+ },
+ "publishing_job": ".yamato/wrench/promotion-jobs.yml#publish_netcode_gameobjects",
+ "branch_pattern": "ReleaseSlash",
+ "wrench_version": "0.10.45.0",
+ "pvp_exemption_path": ".yamato/wrench/pvp-exemptions.json",
+ "cs_project_path": "Tools\\CI\\NGO.Cookbook.csproj"
+}
\ No newline at end of file
diff --git a/Examples/CharacterControllerMovingBodies/.gitignore b/Examples/CharacterControllerMovingBodies/.gitignore
new file mode 100644
index 0000000000..2800399634
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/.gitignore
@@ -0,0 +1,83 @@
+# This .gitignore file should be placed at the root of your Unity project directory
+#
+# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
+#
+/[Ll]ibrary/
+/[Tt]emp/
+/[Oo]bj/
+/[Bb]uild/
+/[Bb]uilds/
+/[Ll]ogs/
+/[Uu]ser[Ss]ettings/
+
+# MemoryCaptures can get excessive in size.
+# They also could contain extremely sensitive data
+/[Mm]emoryCaptures/
+
+# Asset meta data should only be ignored when the corresponding asset is also ignored
+!/[Aa]ssets/**/*.meta
+
+# Uncomment this line if you wish to ignore the asset store tools plugin
+# /[Aa]ssets/AssetStoreTools*
+
+# Autogenerated Jetbrains Rider plugin
+/[Aa]ssets/Plugins/Editor/JetBrains*
+
+# Visual Studio cache directory
+.vs/
+
+# Gradle cache directory
+.gradle/
+
+# Autogenerated VS/MD/Consulo solution and project files
+ExportedObj/
+.consulo/
+*.csproj
+*.unityproj
+*.sln
+*.suo
+*.tmp
+*.user
+*.userprefs
+*.pidb
+*.booproj
+*.svd
+*.pdb
+*.mdb
+*.opendb
+*.VC.db
+
+# Unity3D generated meta files
+*.pidb.meta
+*.pdb.meta
+*.mdb.meta
+
+# Unity3D generated file on crash reports
+sysinfo.txt
+
+# Builds
+*.apk
+*.aab
+*.unitypackage
+
+# Crashlytics generated file
+crashlytics-build.properties
+
+# Packed Addressables
+/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
+
+# Temporary auto-generated Android Assets
+/[Aa]ssets/[Ss]treamingAssets/aa.meta
+/[Aa]ssets/[Ss]treamingAssets/aa/*
+/[Aa]ssets/[Ss]treamingAssets/BuildInfo.json
+/[Aa]ssets/[Ss]treamingAssets/BuildInfo.json.meta
+
+# Secrets
+*.pem
+*.pem.meta
+
+InitTestScene*
+
+boot.config
+SceneTemplateSettings.json
+*BurstAotSettings*.json
diff --git a/Examples/CharacterControllerMovingBodies/Assets/DefaultNetworkPrefabs.asset b/Examples/CharacterControllerMovingBodies/Assets/DefaultNetworkPrefabs.asset
new file mode 100644
index 0000000000..073f4484e8
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/DefaultNetworkPrefabs.asset
@@ -0,0 +1,31 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e651dbb3fbac04af2b8f5abf007ddc23, type: 3}
+ m_Name: DefaultNetworkPrefabs
+ m_EditorClassIdentifier:
+ IsDefault: 1
+ List:
+ - Override: 0
+ Prefab: {fileID: 2522762726852386808, guid: 380c984d34fc8664c8f53fc1d8733a25, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 8921789205124766477, guid: 89b57e576a8d47643b2dbd45b1f8cab1, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 3439633038736912633, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/DefaultNetworkPrefabs.asset.meta b/Examples/CharacterControllerMovingBodies/Assets/DefaultNetworkPrefabs.asset.meta
new file mode 100644
index 0000000000..fee27b3ade
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/DefaultNetworkPrefabs.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: aa82390bfdde2564f828b8e5be375282
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/com.unity.netcode.gameobjects/Components/Messages.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials.meta
similarity index 77%
rename from com.unity.netcode.gameobjects/Components/Messages.meta
rename to Examples/CharacterControllerMovingBodies/Assets/Materials.meta
index fcf8b73d3a..463de70d61 100644
--- a/com.unity.netcode.gameobjects/Components/Messages.meta
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: a9db1d18fa0117f4da5e8e65386b894a
+guid: d5b7ad71451c27e4291295cfffc10328
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocal.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocal.mat
new file mode 100644
index 0000000000..b6fd2dd9a1
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocal.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildLocal
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.8980392, g: 0.039215658, b: 0.7682729, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocal.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocal.mat.meta
new file mode 100644
index 0000000000..35e4d565be
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocal.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 45fc555bc05bfee4ab8b0d536799ecee
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocalNoParentSync.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocalNoParentSync.mat
new file mode 100644
index 0000000000..c44172e7a7
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocalNoParentSync.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildLocalNoParentSync
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.039215658, g: 0.78592235, b: 0.8980392, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocalNoParentSync.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocalNoParentSync.mat.meta
new file mode 100644
index 0000000000..3a26e43d98
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildLocalNoParentSync.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: affef70511a06dd46b8f52636020af4a
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorld.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorld.mat
new file mode 100644
index 0000000000..0c2bf4b187
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorld.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildWorld
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.3783494, g: 0.039215658, b: 0.8980392, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorld.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorld.mat.meta
new file mode 100644
index 0000000000..9a00ded8c6
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorld.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 15d0bda12a233964086aee5c0c357e24
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorldNoParentSync.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorldNoParentSync.mat
new file mode 100644
index 0000000000..86b27eb5c9
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorldNoParentSync.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildWorldNoParentSync
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.039215658, g: 0.8980392, b: 0.09095798, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorldNoParentSync.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorldNoParentSync.mat.meta
new file mode 100644
index 0000000000..5ab7ff2e72
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ChildWorldNoParentSync.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a5e199307b2e0894294d9c8bee99a691
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/Direction.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/Direction.mat
new file mode 100644
index 0000000000..ed5ed117c3
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/Direction.mat
@@ -0,0 +1,84 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Direction
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 0.8962264, g: 0.52830994, b: 0.038047332, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/Direction.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/Direction.mat.meta
new file mode 100644
index 0000000000..c93791fac0
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/Direction.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5324c76c2bab7344badd5ea27a40bcb5
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/GridBlue.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridBlue.mat
new file mode 100644
index 0000000000..9009817e26
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridBlue.mat
@@ -0,0 +1,138 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-2624353793879203111
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GridBlue
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _EMISSION
+ - _GLOSSYREFLECTIONS_OFF
+ - _NORMALMAP
+ m_InvalidKeywords: []
+ m_LightmapFlags: 2
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: b94463ba36040ec4082132c54dd1bbad, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 2800000, guid: 8bf2cf149563066489e749ea032dbca7, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: e71f43865e91e6b418bd0d67be2445dc, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AlphaClip: 0
+ - _AlphaToMask: 0
+ - _Blend: 0
+ - _BlendModePreserveSpecular: 1
+ - _BumpScale: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _DstBlendAlpha: 0
+ - _EnvironmentReflections: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0.477
+ - _GlossyReflections: 0
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 0
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _SrcBlendAlpha: 1
+ - _Surface: 0
+ - _UVSec: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _Color: {r: 0.5438323, g: 0.88474977, b: 0.9528302, a: 1}
+ - _EmissionColor: {r: 0, g: 0.6988592, b: 1, a: 1}
+ - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/GridBlue.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridBlue.mat.meta
new file mode 100644
index 0000000000..b8caf3cbac
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridBlue.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1448a5da57523ce4bbc377143e02fe3c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/GridOrange.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridOrange.mat
new file mode 100644
index 0000000000..38a4e9808b
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridOrange.mat
@@ -0,0 +1,138 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-2624353793879203111
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GridOrange
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _EMISSION
+ - _GLOSSYREFLECTIONS_OFF
+ - _NORMALMAP
+ m_InvalidKeywords: []
+ m_LightmapFlags: 2
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: b94463ba36040ec4082132c54dd1bbad, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 2800000, guid: 8bf2cf149563066489e749ea032dbca7, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: e71f43865e91e6b418bd0d67be2445dc, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AlphaClip: 0
+ - _AlphaToMask: 0
+ - _Blend: 0
+ - _BlendModePreserveSpecular: 1
+ - _BumpScale: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _DstBlendAlpha: 0
+ - _EnvironmentReflections: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0.477
+ - _GlossyReflections: 0
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 0
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _SrcBlendAlpha: 1
+ - _Surface: 0
+ - _UVSec: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _Color: {r: 1, g: 0.49475378, b: 0, a: 1}
+ - _EmissionColor: {r: 0.990566, g: 0.48359674, b: 0.378471, a: 1}
+ - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/GridOrange.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridOrange.mat.meta
new file mode 100644
index 0000000000..bf2873069e
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridOrange.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2e2c886f4af8e304eb9a1e2e50d023b3
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/GridPattern.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridPattern.mat
new file mode 100644
index 0000000000..f44981f387
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridPattern.mat
@@ -0,0 +1,85 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GridPattern
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _GLOSSYREFLECTIONS_OFF
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 1
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 6, y: 6}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: a092c5fa8c60ed04aa1d72555f1740bc, type: 3}
+ m_Scale: {x: 6, y: 6}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 0
+ - _Metallic: 0.785
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0.254717, g: 0.23188858, b: 0.23188858, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/GridPattern.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridPattern.mat.meta
new file mode 100644
index 0000000000..cbca0f4485
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridPattern.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 42c4a0ad1f9d67a45b12f68697321aad
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/GridWhite.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridWhite.mat
new file mode 100644
index 0000000000..7345253099
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridWhite.mat
@@ -0,0 +1,138 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-2624353793879203111
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GridWhite
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _EMISSION
+ - _GLOSSYREFLECTIONS_OFF
+ - _NORMALMAP
+ m_InvalidKeywords: []
+ m_LightmapFlags: 2
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: b94463ba36040ec4082132c54dd1bbad, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 2800000, guid: 8bf2cf149563066489e749ea032dbca7, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: e71f43865e91e6b418bd0d67be2445dc, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AlphaClip: 0
+ - _AlphaToMask: 0
+ - _Blend: 0
+ - _BlendModePreserveSpecular: 1
+ - _BumpScale: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _DstBlendAlpha: 0
+ - _EnvironmentReflections: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0.477
+ - _GlossyReflections: 0
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 0
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _SrcBlendAlpha: 1
+ - _Surface: 0
+ - _UVSec: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/GridWhite.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridWhite.mat.meta
new file mode 100644
index 0000000000..4559482bba
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/GridWhite.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a53ba8919fa78c14caac473c7e7ce7d3
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/Ground.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/Ground.mat
new file mode 100644
index 0000000000..252ea1a0ed
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/Ground.mat
@@ -0,0 +1,79 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Ground
+ m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 0.14769986, g: 0.1509434, b: 0.1473834, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/Ground.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/Ground.mat.meta
new file mode 100644
index 0000000000..6dbcac16d3
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/Ground.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9c73b921ea39f4344a19c2d1c7d6b314
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/PlayerMaterial.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/PlayerMaterial.mat
new file mode 100644
index 0000000000..e7f5729956
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/PlayerMaterial.mat
@@ -0,0 +1,80 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: PlayerMaterial
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/PlayerMaterial.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/PlayerMaterial.mat.meta
new file mode 100644
index 0000000000..1ceca58536
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/PlayerMaterial.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44e292334941fe148b997ca2b01b5789
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ShaderGraphGrid_01_Mat.mat b/Examples/CharacterControllerMovingBodies/Assets/Materials/ShaderGraphGrid_01_Mat.mat
new file mode 100644
index 0000000000..5161ac9b8e
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ShaderGraphGrid_01_Mat.mat
@@ -0,0 +1,134 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ShaderGraphGrid_01_Mat
+ m_Shader: {fileID: -6465566751694194690, guid: b8d7679189d4a5940af46004f3870920, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - Texture2D_C5E3E723:
+ m_Texture: {fileID: 2800000, guid: d4d6919451fe3e24388816386a6d15a4, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Grid_Normal_Map:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0.004, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - Boolean_35A71344: 0
+ - Boolean_7A5F3F39: 1
+ - Boolean_7AC8D832: 1
+ - Vector1_3402D67A: 1
+ - Vector1_3655428E: 5
+ - Vector1_5B05FA1F: 0.062
+ - Vector1_6B67A8FF: -20
+ - Vector1_7810F718: 1
+ - Vector1_B6126E6E: 0.335
+ - Vector1_CA7D5F3: 30
+ - Vector1_D5FBE925: 0.3
+ - Vector1_F2A922B4: 1.73
+ - Vector1_F5FD9210: 33.9
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.119
+ - _GlossyReflections: 1
+ - _Grid_Normal_Strength: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 0
+ - _Parallax: 0.02
+ - _QueueControl: 0
+ - _QueueOffset: 0
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - Color_2B671050: {r: 0.23202202, g: 0.6245157, b: 0.745283, a: 0}
+ - Color_30A0CA2F: {r: 0.02745098, g: 1, b: 0.7565653, a: 0}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
+--- !u!114 &6450197988115792188
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Materials/ShaderGraphGrid_01_Mat.mat.meta b/Examples/CharacterControllerMovingBodies/Assets/Materials/ShaderGraphGrid_01_Mat.mat.meta
new file mode 100644
index 0000000000..efd03db61f
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Materials/ShaderGraphGrid_01_Mat.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7be68f3cac640fd40a7663ac97380a9c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/com.unity.netcode.gameobjects/Samples.meta b/Examples/CharacterControllerMovingBodies/Assets/Models.meta
similarity index 77%
rename from com.unity.netcode.gameobjects/Samples.meta
rename to Examples/CharacterControllerMovingBodies/Assets/Models.meta
index 5a5e3b286a..21910d8d7a 100644
--- a/com.unity.netcode.gameobjects/Samples.meta
+++ b/Examples/CharacterControllerMovingBodies/Assets/Models.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: d48e3f2a8be084f8aae6470ef87063d9
+guid: bd50c879f39d9d94b92706513b4f56ef
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_100x100x200_Mesh.fbx b/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_100x100x200_Mesh.fbx
new file mode 100644
index 0000000000..2fa479b052
Binary files /dev/null and b/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_100x100x200_Mesh.fbx differ
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_100x100x200_Mesh.fbx.meta b/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_100x100x200_Mesh.fbx.meta
new file mode 100644
index 0000000000..2ebb0bb69b
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_100x100x200_Mesh.fbx.meta
@@ -0,0 +1,107 @@
+fileFormatVersion: 2
+guid: 4c31b0c9eb3dcdf4890cd904bf277cdf
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_Mesh.fbx b/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_Mesh.fbx
new file mode 100644
index 0000000000..ac24ee24d6
Binary files /dev/null and b/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_Mesh.fbx differ
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_Mesh.fbx.meta b/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_Mesh.fbx.meta
new file mode 100644
index 0000000000..f9aabd0c03
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Models/Ramp_Mesh.fbx.meta
@@ -0,0 +1,107 @@
+fileFormatVersion: 2
+guid: 5d8449220d5795b448a4cee5cbde4b56
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Models/Tunnel_Mesh.fbx b/Examples/CharacterControllerMovingBodies/Assets/Models/Tunnel_Mesh.fbx
new file mode 100644
index 0000000000..7ec9d4bb74
Binary files /dev/null and b/Examples/CharacterControllerMovingBodies/Assets/Models/Tunnel_Mesh.fbx differ
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Models/Tunnel_Mesh.fbx.meta b/Examples/CharacterControllerMovingBodies/Assets/Models/Tunnel_Mesh.fbx.meta
new file mode 100644
index 0000000000..75c9997470
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Models/Tunnel_Mesh.fbx.meta
@@ -0,0 +1,107 @@
+fileFormatVersion: 2
+guid: 63fcabcd345d556498e09f748683088e
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Models/Wall_Mesh.fbx b/Examples/CharacterControllerMovingBodies/Assets/Models/Wall_Mesh.fbx
new file mode 100644
index 0000000000..0bfc7f6493
Binary files /dev/null and b/Examples/CharacterControllerMovingBodies/Assets/Models/Wall_Mesh.fbx differ
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Models/Wall_Mesh.fbx.meta b/Examples/CharacterControllerMovingBodies/Assets/Models/Wall_Mesh.fbx.meta
new file mode 100644
index 0000000000..15452589e0
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Models/Wall_Mesh.fbx.meta
@@ -0,0 +1,107 @@
+fileFormatVersion: 2
+guid: 34560503bf9d61046b252db98a8cf770
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs.meta b/Examples/CharacterControllerMovingBodies/Assets/Prefabs.meta
new file mode 100644
index 0000000000..c867cd3a70
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4b97118ef11ec3347bc72b8d681e094b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Floor.physicMaterial b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Floor.physicMaterial
new file mode 100644
index 0000000000..5aeefdde15
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Floor.physicMaterial
@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!134 &13400000
+PhysicsMaterial:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Floor
+ serializedVersion: 2
+ m_DynamicFriction: 2.5
+ m_StaticFriction: 2
+ m_Bounciness: 0
+ m_FrictionCombine: 3
+ m_BounceCombine: 2
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Floor.physicMaterial.meta b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Floor.physicMaterial.meta
new file mode 100644
index 0000000000..a55550d94a
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Floor.physicMaterial.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2c574f6ade946d94f9ec0183e3bc4579
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 13400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/PlayerNoRigidbody.prefab b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/PlayerNoRigidbody.prefab
new file mode 100644
index 0000000000..ca1d2b414e
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/PlayerNoRigidbody.prefab
@@ -0,0 +1,960 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &2819221948576051598
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8815849029736207364}
+ - component: {fileID: 3042900316038666559}
+ - component: {fileID: 1437858011576020080}
+ - component: {fileID: 8264281895793262867}
+ m_Layer: 0
+ m_Name: PlayerBallChild1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8815849029736207364
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2819221948576051598}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1, y: 0, z: 0}
+ m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 394823601370723229}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &3042900316038666559
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2819221948576051598}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1437858011576020080
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2819221948576051598}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!114 &8264281895793262867
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2819221948576051598}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 792d7ce524eb358469373fe12babef88, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ AuthorityMode: 1
+ TickSyncChildren: 0
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.001
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.01
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 1
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 1
+ ExpandPlayerBallMotion: 1
+ ExpandNetworkTransform: 1
+ RotationAxis: 2
+ RotationSpeed: 1.5
+--- !u!1 &3959781627078922459
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 394823601370723229}
+ - component: {fileID: 1530657457870194733}
+ - component: {fileID: 8179170832269307327}
+ - component: {fileID: 8231288296501785146}
+ m_Layer: 0
+ m_Name: PlayerBallPrime
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &394823601370723229
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3959781627078922459}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1.25, y: 0, z: 0}
+ m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 8815849029736207364}
+ - {fileID: 7136463849438099188}
+ - {fileID: 5551906405844277949}
+ m_Father: {fileID: 8921789205124766473}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1530657457870194733
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3959781627078922459}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &8179170832269307327
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3959781627078922459}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a53ba8919fa78c14caac473c7e7ce7d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!114 &8231288296501785146
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3959781627078922459}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 792d7ce524eb358469373fe12babef88, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ AuthorityMode: 1
+ TickSyncChildren: 0
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.001
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.01
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 1
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 1
+ ExpandPlayerBallMotion: 1
+ ExpandNetworkTransform: 1
+ RotationAxis: 0
+ RotationSpeed: 1.5
+--- !u!1 &3973637191948275635
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8797190989880117053}
+ - component: {fileID: 1956256172504790623}
+ - component: {fileID: 2171905566637076429}
+ m_Layer: 0
+ m_Name: ParentedText
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8797190989880117053
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3973637191948275635}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1.91, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8921789205124766473}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &1956256172504790623
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3973637191948275635}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!102 &2171905566637076429
+TextMesh:
+ serializedVersion: 3
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3973637191948275635}
+ m_Text: "Hello \nWorld"
+ m_OffsetZ: 0
+ m_CharacterSize: 0.15
+ m_LineSpacing: 1
+ m_Anchor: 4
+ m_Alignment: 1
+ m_TabSize: 4
+ m_FontSize: 20
+ m_FontStyle: 1
+ m_RichText: 1
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_Color:
+ serializedVersion: 2
+ rgba: 4294967295
+--- !u!1 &7133739606324490315
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5551906405844277949}
+ - component: {fileID: 1792842414970541714}
+ - component: {fileID: 6744917009213370100}
+ - component: {fileID: 6571689152541036907}
+ m_Layer: 0
+ m_Name: PlayerBallChild3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &5551906405844277949
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7133739606324490315}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 1}
+ m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 394823601370723229}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1792842414970541714
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7133739606324490315}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &6744917009213370100
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7133739606324490315}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!114 &6571689152541036907
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7133739606324490315}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 792d7ce524eb358469373fe12babef88, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ AuthorityMode: 1
+ TickSyncChildren: 0
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.001
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.01
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 1
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 1
+ ExpandPlayerBallMotion: 1
+ ExpandNetworkTransform: 1
+ RotationAxis: 1
+ RotationSpeed: 1.5
+--- !u!1 &7484009658662050968
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7136463849438099188}
+ - component: {fileID: 8767029715903736994}
+ - component: {fileID: 186997181429634371}
+ - component: {fileID: 4424954456620528769}
+ m_Layer: 0
+ m_Name: PlayerBallChild2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7136463849438099188
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7484009658662050968}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1, y: 0, z: 0}
+ m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 394823601370723229}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &8767029715903736994
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7484009658662050968}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &186997181429634371
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7484009658662050968}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!114 &4424954456620528769
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7484009658662050968}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 792d7ce524eb358469373fe12babef88, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ AuthorityMode: 1
+ TickSyncChildren: 0
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.001
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.01
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 1
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 1
+ ExpandPlayerBallMotion: 0
+ ExpandNetworkTransform: 1
+ RotationAxis: 0
+ RotationSpeed: 1.5
+--- !u!1 &8837707216906300506
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3256164543801378073}
+ - component: {fileID: 5138046720836505354}
+ - component: {fileID: 1048758437790369019}
+ - component: {fileID: 3232232006964461868}
+ m_Layer: 0
+ m_Name: Direction
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3256164543801378073
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8837707216906300506}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.529, z: 0.36}
+ m_LocalScale: {x: 0.5, y: 0.35, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8921789205124766473}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &5138046720836505354
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8837707216906300506}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &1048758437790369019
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8837707216906300506}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5324c76c2bab7344badd5ea27a40bcb5, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &3232232006964461868
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8837707216906300506}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &8921789205124766477
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8921789205124766473}
+ - component: {fileID: 8921789205124766472}
+ - component: {fileID: 8921789205124766479}
+ - component: {fileID: 8921789205124766478}
+ - component: {fileID: 3121348088455848731}
+ - component: {fileID: 8921789205124766474}
+ - component: {fileID: 871737567343884637}
+ - component: {fileID: 571224925323069553}
+ - component: {fileID: 2509722539211228765}
+ m_Layer: 0
+ m_Name: PlayerNoRigidbody
+ m_TagString: Player
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8921789205124766473
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8921789205124766477}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 3256164543801378073}
+ - {fileID: 8797190989880117053}
+ - {fileID: 394823601370723229}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &8921789205124766472
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8921789205124766477}
+ m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &8921789205124766479
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8921789205124766477}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 44e292334941fe148b997ca2b01b5789, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!136 &8921789205124766478
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8921789205124766477}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Height: 2
+ m_Direction: 1
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!143 &3121348088455848731
+CharacterController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8921789205124766477}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Height: 2
+ m_Radius: 0.5
+ m_SlopeLimit: 45
+ m_StepOffset: 0.3
+ m_SkinWidth: 0.08
+ m_MinMoveDistance: 0.001
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &8921789205124766474
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8921789205124766477}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ GlobalObjectIdHash: 2508530451
+ InScenePlacedSourceGlobalObjectIdHash: 0
+ DeferredDespawnTick: 0
+ Ownership: 0
+ AlwaysReplicateAsRoot: 0
+ SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 1
+ SpawnWithObservers: 1
+ DontDestroyWithOwner: 0
+ AutoObjectParentSync: 1
+ SyncOwnerTransformWhenParented: 0
+ AllowOwnerToParent: 1
+--- !u!114 &871737567343884637
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8921789205124766477}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8e5128237997be649af0cc87dd0eb563, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ApplyColorToChildren: 1
+ IgnoreChildren:
+ - {fileID: 8837707216906300506}
+--- !u!114 &571224925323069553
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8921789205124766477}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5ce25b0b3f15e6446a88a85787c2f94a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ AuthorityMode: 1
+ TickSyncChildren: 1
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.01
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.1
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 0
+ SwitchTransformSpaceWhenParented: 1
+ Interpolate: 1
+ SlerpPosition: 0
+ ExpandMoverScriptNoRigidbody: 0
+ ExpandNetworkTransform: 1
+ SpawnRadius: 10
+ Increment: 1
+ RotationSpeed: 1.26
+ MovementSpeed: 15
+ JumpSpeed: 10
+ AirSpeedFactor: 0.35
+ Gravity: -9.8
+--- !u!65 &2509722539211228765
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8921789205124766477}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1.4, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/PlayerNoRigidbody.prefab.meta b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/PlayerNoRigidbody.prefab.meta
new file mode 100644
index 0000000000..9199f72759
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/PlayerNoRigidbody.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8ae02ac62e2067144b8ff06d48aeb47a
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Ramp_Prefab.prefab b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Ramp_Prefab.prefab
new file mode 100644
index 0000000000..edcdf3071c
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Ramp_Prefab.prefab
@@ -0,0 +1,111 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &8924170145835402666
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8111781018561290000}
+ - component: {fileID: 5133274882688487605}
+ - component: {fileID: 6978882906433643647}
+ - component: {fileID: 894093325933845257}
+ m_Layer: 0
+ m_Name: Ramp_Prefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &8111781018561290000
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8924170145835402666}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &5133274882688487605
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8924170145835402666}
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!23 &6978882906433643647
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8924170145835402666}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &894093325933845257
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8924170145835402666}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 5
+ m_Convex: 0
+ m_CookingOptions: 30
+ m_Mesh: {fileID: -8512782951310809723, guid: 426a2785f8a940049aac2c246661cf09, type: 3}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Ramp_Prefab.prefab.meta b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Ramp_Prefab.prefab.meta
new file mode 100644
index 0000000000..14e8009f6b
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Ramp_Prefab.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7ab2ae375810b5641a36d327b9f022cf
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.physicMaterial b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.physicMaterial
new file mode 100644
index 0000000000..f76e8e1f5a
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.physicMaterial
@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!134 &13400000
+PhysicsMaterial:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: RotatingBody
+ serializedVersion: 2
+ m_DynamicFriction: 2.5
+ m_StaticFriction: 2
+ m_Bounciness: 0
+ m_FrictionCombine: 3
+ m_BounceCombine: 2
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.physicMaterial.meta b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.physicMaterial.meta
new file mode 100644
index 0000000000..4650ebf5b0
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.physicMaterial.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c16e8d98094923449892b28a230ddb9c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 13400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.prefab b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.prefab
new file mode 100644
index 0000000000..73c04c02fa
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.prefab
@@ -0,0 +1,1138 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &755183729697733696
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 522841341294848418}
+ - component: {fileID: 6376943934387906635}
+ - component: {fileID: 4793038284696412839}
+ m_Layer: 0
+ m_Name: WallPusherA_Inner
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &522841341294848418
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 755183729697733696}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 4.05, y: 2.27, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &6376943934387906635
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 755183729697733696}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2, y: 2.25, z: 6}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &4793038284696412839
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 755183729697733696}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2c40721ca0fd31645a742e5ad0e0cdc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ PushDirection: 1
+ ToCenterDirOrig: {x: 0, y: 0, z: 0}
+ ToCenterDirCalc: {x: 0, y: 0, z: 0}
+ ToCenterDirTrans: {x: 0, y: 0, z: 0}
+--- !u!1 &1070469363212057228
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967607898511807569}
+ - component: {fileID: 4081511419635538304}
+ - component: {fileID: 3264090684553753291}
+ - component: {fileID: 2074962368930179783}
+ - component: {fileID: 2659845886479429441}
+ - component: {fileID: 365707591732078506}
+ m_Layer: 0
+ m_Name: Tunnel_Prefab (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &4967607898511807569
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
+ m_LocalPosition: {x: 0, y: 5, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
+--- !u!33 &4081511419635538304
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Mesh: {fileID: 5060444177187149915, guid: 63fcabcd345d556498e09f748683088e, type: 3}
+--- !u!23 &3264090684553753291
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &2074962368930179783
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Material: {fileID: 13400000, guid: c16e8d98094923449892b28a230ddb9c, type: 2}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2.502674, y: 6.0000024, z: 0.25225586}
+ m_Center: {x: 0, y: -5.4553292e-15, z: 2.3838842}
+--- !u!65 &2659845886479429441
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.19382703, y: 6.0000024, z: 2.2399507}
+ m_Center: {x: -1.1314733, y: -1.7786642e-15, z: 1.1251621}
+--- !u!65 &365707591732078506
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.16720939, y: 6.0000024, z: 2.256102}
+ m_Center: {x: 1.1123942, y: -1.893427e-15, z: 1.1332378}
+--- !u!1 &1227036625448805321
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6179387521291227856}
+ - component: {fileID: 6043205804484853104}
+ - component: {fileID: 7583159525709273484}
+ - component: {fileID: 8095289646395249164}
+ m_Layer: 0
+ m_Name: Ramp_PrefabA
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &6179387521291227856
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1227036625448805321}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.25, z: 7.993}
+ m_LocalScale: {x: 8, y: 0.5, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 3394725634534525932}
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &6043205804484853104
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1227036625448805321}
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!23 &7583159525709273484
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1227036625448805321}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &8095289646395249164
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1227036625448805321}
+ m_Material: {fileID: 13400000, guid: c16e8d98094923449892b28a230ddb9c, type: 2}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 5
+ m_Convex: 1
+ m_CookingOptions: 30
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!1 &1451894099667441545
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3394725634534525932}
+ - component: {fileID: 2385627259374300527}
+ m_Layer: 0
+ m_Name: BridgeGap
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3394725634534525932
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1451894099667441545}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: 1, z: -0.000000021855694, w: 0}
+ m_LocalPosition: {x: 0, y: 0.14, z: -1.0100002}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 6179387521291227856}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!136 &2385627259374300527
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1451894099667441545}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.1
+ m_Height: 1.15
+ m_Direction: 0
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &2406660182425334495
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1877966211327071347}
+ - component: {fileID: 3334163744623252575}
+ - component: {fileID: 5776191766534439988}
+ - component: {fileID: 6535282611511474253}
+ - component: {fileID: 8963258823839906869}
+ - component: {fileID: 7304575238635320140}
+ m_Layer: 0
+ m_Name: Tunnel_Prefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &1877966211327071347
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
+ m_LocalPosition: {x: 0, y: 4.96, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0}
+--- !u!33 &3334163744623252575
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Mesh: {fileID: 5060444177187149915, guid: 63fcabcd345d556498e09f748683088e, type: 3}
+--- !u!23 &5776191766534439988
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &6535282611511474253
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2.502674, y: 6.0000024, z: 0.258326}
+ m_Center: {x: 0, y: 5.4121983e-15, z: 2.3808491}
+--- !u!65 &8963258823839906869
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2527809, y: 6.0000024, z: 2.2399507}
+ m_Center: {x: -1.1249466, y: 1.7786642e-15, z: 1.1251621}
+--- !u!65 &7304575238635320140
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.26525307, y: 6.0000024, z: 2.256102}
+ m_Center: {x: 1.1187105, y: 1.893427e-15, z: 1.1332378}
+--- !u!1 &2492174073242389836
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6182591213277846585}
+ - component: {fileID: 3395949877673187758}
+ m_Layer: 0
+ m_Name: BridgeGap (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6182591213277846585
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2492174073242389836}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -1, z: 0.000000021855694, w: 0}
+ m_LocalPosition: {x: 0, y: 0.14, z: -1.01}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7826839884382864090}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!136 &3395949877673187758
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2492174073242389836}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.1
+ m_Height: 1.15
+ m_Direction: 0
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &3038314618705458857
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3570252208687936609}
+ - component: {fileID: 4156819582579138816}
+ - component: {fileID: 2806575150631930745}
+ m_Layer: 0
+ m_Name: WallPusherB_Inner
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &3570252208687936609
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3038314618705458857}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.07, y: 2.27, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &4156819582579138816
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3038314618705458857}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2, y: 2.25, z: 6}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &2806575150631930745
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3038314618705458857}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2c40721ca0fd31645a742e5ad0e0cdc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ PushDirection: 0
+ ToCenterDirOrig: {x: 0, y: 0, z: 0}
+ ToCenterDirCalc: {x: 0, y: 0, z: 0}
+ ToCenterDirTrans: {x: 0, y: 0, z: 0}
+--- !u!1 &4405129256840456534
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5628673131512617452}
+ - component: {fileID: 1065561891622964567}
+ - component: {fileID: 4468158207537748033}
+ m_Layer: 0
+ m_Name: WallPusherA_Outer
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &5628673131512617452
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4405129256840456534}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 4.89, y: 2.27, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1065561891622964567
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4405129256840456534}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2, y: 2.25, z: 6}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &4468158207537748033
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4405129256840456534}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2c40721ca0fd31645a742e5ad0e0cdc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ PushDirection: 0
+ ToCenterDirOrig: {x: 0, y: 0, z: 0}
+ ToCenterDirCalc: {x: 0, y: 0, z: 0}
+ ToCenterDirTrans: {x: 0, y: 0, z: 0}
+--- !u!1 &5415449980466536476
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4291553105548296809}
+ - component: {fileID: 8134939553748259768}
+ - component: {fileID: 3307166493715739449}
+ - component: {fileID: 850162744905636139}
+ m_Layer: 0
+ m_Name: RotatingBody
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4291553105548296809
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5415449980466536476}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1877966211327071347}
+ - {fileID: 4967607898511807569}
+ - {fileID: 522841341294848418}
+ - {fileID: 5628673131512617452}
+ - {fileID: 3570252208687936609}
+ - {fileID: 5389614242607036533}
+ - {fileID: 6179387521291227856}
+ - {fileID: 7826839884382864090}
+ - {fileID: 2053800158975384476}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &8134939553748259768
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5415449980466536476}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 8.023605, y: 8.144613, z: 20.106205}
+ m_Center: {x: -0.03800702, y: 4.1726913, z: -0.02903366}
+--- !u!114 &3307166493715739449
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5415449980466536476}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ GlobalObjectIdHash: 1921503253
+ InScenePlacedSourceGlobalObjectIdHash: 0
+ DeferredDespawnTick: 0
+ Ownership: 2
+ AlwaysReplicateAsRoot: 0
+ SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 1
+ SpawnWithObservers: 1
+ DontDestroyWithOwner: 1
+ AutoObjectParentSync: 1
+ SyncOwnerTransformWhenParented: 1
+--- !u!114 &850162744905636139
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5415449980466536476}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 374ac199eb18f0f468bc018a722775c2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ AuthorityMode: 1
+ TickSyncChildren: 1
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.1
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.1
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 0
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 0
+ RotationSpeed: 0.25
+ RotateDirection: 0
+ ZAxisMove: 0
+--- !u!1 &5463907175177238004
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2053800158975384476}
+ - component: {fileID: 2688281628964240045}
+ m_Layer: 0
+ m_Name: Point Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2053800158975384476
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5463907175177238004}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 6.54, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!108 &2688281628964240045
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5463907175177238004}
+ m_Enabled: 1
+ serializedVersion: 11
+ m_Type: 2
+ m_Color: {r: 0.9622642, g: 0.9622642, b: 0.9622642, a: 1}
+ m_Intensity: 2
+ m_Range: 20
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 0
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ForceVisible: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+ m_LightUnit: 1
+ m_LuxAtDistance: 1
+ m_EnableSpotReflector: 1
+--- !u!1 &6529740436184164063
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7826839884382864090}
+ - component: {fileID: 2797882924116045225}
+ - component: {fileID: 1097787484049525257}
+ - component: {fileID: 570708159460268413}
+ m_Layer: 0
+ m_Name: Ramp_PrefabB
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &7826839884382864090
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6529740436184164063}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
+ m_LocalPosition: {x: 0, y: 0.25, z: -7.993}
+ m_LocalScale: {x: 8, y: 0.5, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 6182591213277846585}
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
+--- !u!33 &2797882924116045225
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6529740436184164063}
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!23 &1097787484049525257
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6529740436184164063}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &570708159460268413
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6529740436184164063}
+ m_Material: {fileID: 13400000, guid: c16e8d98094923449892b28a230ddb9c, type: 2}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 5
+ m_Convex: 1
+ m_CookingOptions: 30
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!1 &8002386465640125644
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5389614242607036533}
+ - component: {fileID: 4101224782146625552}
+ - component: {fileID: 6895917012766152111}
+ m_Layer: 0
+ m_Name: WallPusherB_Outer
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &5389614242607036533
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8002386465640125644}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.83, y: 2.27, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &4101224782146625552
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8002386465640125644}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2, y: 2.25, z: 6}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &6895917012766152111
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8002386465640125644}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2c40721ca0fd31645a742e5ad0e0cdc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ PushDirection: 1
+ ToCenterDirOrig: {x: 0, y: 0, z: 0}
+ ToCenterDirCalc: {x: 0, y: 0, z: 0}
+ ToCenterDirTrans: {x: 0, y: 0, z: 0}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.prefab.meta b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.prefab.meta
new file mode 100644
index 0000000000..d22d47036e
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/RotatingBody.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0123d7125346c274da00b38e950a266b
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/SceneLevelGeometry.prefab b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/SceneLevelGeometry.prefab
new file mode 100644
index 0000000000..f636c60a54
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/SceneLevelGeometry.prefab
@@ -0,0 +1,794 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &910007655143077103
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6283120762215196916}
+ - component: {fileID: 3739510624437302406}
+ m_Layer: 0
+ m_Name: CornerBumper (1)
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6283120762215196916
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 910007655143077103}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0.9244967, z: -0, w: -0.38119}
+ m_LocalPosition: {x: -29.72, y: 0.98, z: 29.82}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: -224.815, z: 0}
+--- !u!65 &3739510624437302406
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 910007655143077103}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 4, y: 2, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1854705290947220173
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2290144462706082272}
+ - component: {fileID: 4559046433245738380}
+ m_Layer: 0
+ m_Name: CornerBumper (2)
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2290144462706082272
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1854705290947220173}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0.3771283, z: -0, w: -0.92616105}
+ m_LocalPosition: {x: -29.53, y: 0.98, z: -29.71}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: -315.688, z: 0}
+--- !u!65 &4559046433245738380
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1854705290947220173}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 4, y: 2, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &4012615691354089848
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615691354089844}
+ - component: {fileID: 4012615691354089845}
+ - component: {fileID: 4012615691354089850}
+ - component: {fileID: 4012615691354089851}
+ m_Layer: 0
+ m_Name: Floor
+ m_TagString: Floor
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615691354089844
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691354089848}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: -0.50000006, z: 0}
+ m_LocalScale: {x: 60, y: 1, z: 60}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615691354089845
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691354089848}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615691354089850
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691354089848}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 42c4a0ad1f9d67a45b12f68697321aad, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615691354089851
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691354089848}
+ m_Material: {fileID: 13400000, guid: 2c574f6ade946d94f9ec0183e3bc4579, type: 2}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &4012615691503252843
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615691503252839}
+ - component: {fileID: 4012615691503252836}
+ - component: {fileID: 4012615691503252837}
+ - component: {fileID: 4012615691503252842}
+ m_Layer: 0
+ m_Name: Side
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615691503252839
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691503252843}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -30.5, y: 0.49999994, z: 0}
+ m_LocalScale: {x: 1, y: 3, z: 62}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615691503252836
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691503252843}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615691503252837
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691503252843}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 9c73b921ea39f4344a19c2d1c7d6b314, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615691503252842
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691503252843}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2, y: 1, z: 1}
+ m_Center: {x: -0.5, y: 0, z: 0}
+--- !u!1 &4012615691965054905
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615691965054901}
+ - component: {fileID: 4012615691965054906}
+ - component: {fileID: 4012615691965054907}
+ - component: {fileID: 4012615691965054904}
+ m_Layer: 0
+ m_Name: Side
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615691965054901
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691965054905}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.49999994, z: 30.5}
+ m_LocalScale: {x: 60, y: 3, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615691965054906
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691965054905}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615691965054907
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691965054905}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 9c73b921ea39f4344a19c2d1c7d6b314, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615691965054904
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691965054905}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 2}
+ m_Center: {x: 0, y: 0, z: 0.5}
+--- !u!1 &4012615692269653858
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615692269653854}
+ - component: {fileID: 4012615692269653855}
+ - component: {fileID: 4012615692269653852}
+ - component: {fileID: 4012615692269653853}
+ m_Layer: 0
+ m_Name: Side
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615692269653854
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692269653858}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.49999994, z: -30.5}
+ m_LocalScale: {x: 60, y: 3, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615692269653855
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692269653858}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615692269653852
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692269653858}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 9c73b921ea39f4344a19c2d1c7d6b314, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615692269653853
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692269653858}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 2}
+ m_Center: {x: 0, y: 0, z: -0.5}
+--- !u!1 &4012615692778511854
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615692778511849}
+ m_Layer: 0
+ m_Name: SceneLevelGeometry
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615692778511849
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692778511854}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.000000059604645, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 4012615691354089844}
+ - {fileID: 4012615691965054901}
+ - {fileID: 4012615692269653854}
+ - {fileID: 4012615691503252839}
+ - {fileID: 4012615692791378778}
+ - {fileID: 3910294717376836327}
+ - {fileID: 6283120762215196916}
+ - {fileID: 2290144462706082272}
+ - {fileID: 6959258897999621209}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4012615692791378782
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615692791378778}
+ - component: {fileID: 4012615692791378779}
+ - component: {fileID: 4012615692791378776}
+ - component: {fileID: 4012615692791378777}
+ m_Layer: 0
+ m_Name: Side
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615692791378778
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692791378782}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 30.5, y: 0.49999994, z: 0}
+ m_LocalScale: {x: 1, y: 3, z: 62}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615692791378779
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692791378782}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615692791378776
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692791378782}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 9c73b921ea39f4344a19c2d1c7d6b314, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615692791378777
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692791378782}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2, y: 1, z: 1}
+ m_Center: {x: 0.5, y: 0, z: 0}
+--- !u!1 &4674276234353933548
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3910294717376836327}
+ - component: {fileID: 3136259738973340924}
+ m_Layer: 0
+ m_Name: CornerBumper
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3910294717376836327
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4674276234353933548}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: -0.38268343, z: 0, w: 0.92387956}
+ m_LocalPosition: {x: 29.7, y: 0.98, z: -29.61}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: -45, z: 0}
+--- !u!65 &3136259738973340924
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4674276234353933548}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 4, y: 2, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &7080625901286762351
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6959258897999621209}
+ - component: {fileID: 7672408768716900064}
+ m_Layer: 0
+ m_Name: CornerBumper (3)
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6959258897999621209
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7080625901286762351}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: 0.93588465, z: -0, w: -0.35230666}
+ m_LocalPosition: {x: 29.26, y: 0.98, z: 29.45}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: -498.74298, z: 0}
+--- !u!65 &7672408768716900064
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7080625901286762351}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 4, y: 2, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/SceneLevelGeometry.prefab.meta b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/SceneLevelGeometry.prefab.meta
new file mode 100644
index 0000000000..154fd718e7
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/SceneLevelGeometry.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3ec484313a7a6754dac871e620df8db2
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Tunnel_Prefab.prefab b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Tunnel_Prefab.prefab
new file mode 100644
index 0000000000..c596d7333d
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Tunnel_Prefab.prefab
@@ -0,0 +1,154 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1604908963751126680
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2093637950428003362}
+ - component: {fileID: 3071950872142852999}
+ - component: {fileID: 956227959320364877}
+ - component: {fileID: 4985949235297978144}
+ - component: {fileID: 8456313914433245678}
+ - component: {fileID: 1138964657491743937}
+ m_Layer: 0
+ m_Name: Tunnel_Prefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &2093637950428003362
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: -90.00001, y: 0, z: 0}
+--- !u!33 &3071950872142852999
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Mesh: {fileID: 5060444177187149915, guid: 63fcabcd345d556498e09f748683088e, type: 3}
+--- !u!23 &956227959320364877
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4985949235297978144
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2.502674, y: 6.0000024, z: 0.258326}
+ m_Center: {x: 0, y: 5.4121983e-15, z: 2.3808491}
+--- !u!65 &8456313914433245678
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2527809, y: 6.0000024, z: 2.2399507}
+ m_Center: {x: -1.1249466, y: 1.7786642e-15, z: 1.1251621}
+--- !u!65 &1138964657491743937
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.26525307, y: 6.0000024, z: 2.256102}
+ m_Center: {x: 1.1187105, y: 1.893427e-15, z: 1.1332378}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Tunnel_Prefab.prefab.meta b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Tunnel_Prefab.prefab.meta
new file mode 100644
index 0000000000..58def4a902
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Tunnel_Prefab.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4b50ff3d475fc3f4fa77ac6aa6e679f2
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Wall_Prefab.prefab b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Wall_Prefab.prefab
new file mode 100644
index 0000000000..f8dde4effc
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Wall_Prefab.prefab
@@ -0,0 +1,132 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &7993119983977949264
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7324705577624711914}
+ - component: {fileID: 5911343394670230863}
+ - component: {fileID: 8497650616581704069}
+ - component: {fileID: 9105854698657379725}
+ - component: {fileID: 1277700310800588604}
+ m_Layer: 0
+ m_Name: Wall_Prefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &7324705577624711914
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &5911343394670230863
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ m_Mesh: {fileID: 6352809919239313146, guid: 34560503bf9d61046b252db98a8cf770, type: 3}
+--- !u!23 &8497650616581704069
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &9105854698657379725
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.25, y: 1.0095696, z: 2.9958286}
+ m_Center: {x: 0, y: 0.5047848, z: 1.5020857}
+--- !u!65 &1277700310800588604
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.25, y: 2.0055175, z: 3.000146}
+ m_Center: {x: 0, y: 1.0027587, z: -1.499927}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Wall_Prefab.prefab.meta b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Wall_Prefab.prefab.meta
new file mode 100644
index 0000000000..42ef5284f2
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Prefabs/Wall_Prefab.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3b9516be83427084ca3fffca42e7b6da
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Resources.meta b/Examples/CharacterControllerMovingBodies/Assets/Resources.meta
new file mode 100644
index 0000000000..edebf21a13
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Resources.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6a51a9fbd254e544eb3e85853865f80d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Resources/BillingMode.json b/Examples/CharacterControllerMovingBodies/Assets/Resources/BillingMode.json
new file mode 100644
index 0000000000..6f4bfb7103
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Resources/BillingMode.json
@@ -0,0 +1 @@
+{"androidStore":"GooglePlay"}
\ No newline at end of file
diff --git a/com.unity.netcode.gameobjects/ValidationExceptions.json.meta b/Examples/CharacterControllerMovingBodies/Assets/Resources/BillingMode.json.meta
similarity index 75%
rename from com.unity.netcode.gameobjects/ValidationExceptions.json.meta
rename to Examples/CharacterControllerMovingBodies/Assets/Resources/BillingMode.json.meta
index 3316cf20bd..557e7d707c 100644
--- a/com.unity.netcode.gameobjects/ValidationExceptions.json.meta
+++ b/Examples/CharacterControllerMovingBodies/Assets/Resources/BillingMode.json.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 2a43005be301c9043aab7034757d4868
+guid: a1890189503409a4bb24dd4f0eab1f0a
TextScriptImporter:
externalObjects: {}
userData:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scenes.meta b/Examples/CharacterControllerMovingBodies/Assets/Scenes.meta
new file mode 100644
index 0000000000..b398c5b4ab
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9bb955f9d9ef9c34d897f353c8643a1d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scenes/Camera.preset b/Examples/CharacterControllerMovingBodies/Assets/Scenes/Camera.preset
new file mode 100644
index 0000000000..b8bbae0a72
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scenes/Camera.preset
@@ -0,0 +1,195 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!181963792 &2655988077585873504
+Preset:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Camera
+ m_TargetType:
+ m_NativeTypeID: 20
+ m_ManagedTypePPtr: {fileID: 0}
+ m_ManagedTypeFallback:
+ m_Properties:
+ - target: {fileID: 0}
+ propertyPath: m_Enabled
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_ClearFlags
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BackGroundColor.r
+ value: 0.066037714
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BackGroundColor.g
+ value: 0.066037714
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BackGroundColor.b
+ value: 0.066037714
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BackGroundColor.a
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_projectionMatrixMode
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_GateFitMode
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_FOVAxisMode
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Iso
+ value: 200
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_ShutterSpeed
+ value: 0.005
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Aperture
+ value: 16
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_FocusDistance
+ value: 10
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_FocalLength
+ value: 50
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BladeCount
+ value: 5
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Curvature.x
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Curvature.y
+ value: 11
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BarrelClipping
+ value: 0.25
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Anamorphism
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_SensorSize.x
+ value: 36
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_SensorSize.y
+ value: 24
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_LensShift.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_LensShift.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_NormalizedViewPortRect.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_NormalizedViewPortRect.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_NormalizedViewPortRect.width
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_NormalizedViewPortRect.height
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: near clip plane
+ value: 0.3
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: far clip plane
+ value: 1000
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: field of view
+ value: 60
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: orthographic
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: orthographic size
+ value: 5
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Depth
+ value: -1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_CullingMask.m_Bits
+ value: 4294967295
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_RenderingPath
+ value: -1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_TargetTexture
+ value:
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_TargetDisplay
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_TargetEye
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_HDR
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_AllowMSAA
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_AllowDynamicResolution
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_ForceIntoRT
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_OcclusionCulling
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_StereoConvergence
+ value: 10
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_StereoSeparation
+ value: 0.022
+ objectReference: {fileID: 0}
+ m_ExcludedProperties: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scenes/Camera.preset.meta b/Examples/CharacterControllerMovingBodies/Assets/Scenes/Camera.preset.meta
new file mode 100644
index 0000000000..3e327ecf36
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scenes/Camera.preset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1807b530602915743868e6c3bdc1a93c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2655988077585873504
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scenes/CharacterController.unity b/Examples/CharacterControllerMovingBodies/Assets/Scenes/CharacterController.unity
new file mode 100644
index 0000000000..cca8cabbeb
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scenes/CharacterController.unity
@@ -0,0 +1,1434 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 10
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 705507994}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 12
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &28232985
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 28232986}
+ - component: {fileID: 28232988}
+ - component: {fileID: 28232987}
+ - component: {fileID: 28232989}
+ - component: {fileID: 28232990}
+ m_Layer: 5
+ m_Name: ServerHostClientDisplay
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &28232986
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 479361665}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0}
+ m_AnchorMax: {x: 0.5, y: 0}
+ m_AnchoredPosition: {x: 0, y: 40}
+ m_SizeDelta: {x: 180, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &28232987
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 23
+ m_FontStyle: 1
+ m_BestFit: 1
+ m_MinSize: 1
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text:
+--- !u!222 &28232988
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_CullTransparentMesh: 1
+--- !u!114 &28232989
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ GlobalObjectIdHash: 536662705
+ InScenePlacedSourceGlobalObjectIdHash: 0
+ DeferredDespawnTick: 0
+ Ownership: 1
+ AlwaysReplicateAsRoot: 0
+ SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 1
+ SpawnWithObservers: 1
+ DontDestroyWithOwner: 0
+ AutoObjectParentSync: 1
+ SyncOwnerTransformWhenParented: 1
+ AllowOwnerToParent: 0
+--- !u!114 &28232990
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6637cd674efb56a48a3d4d545d23a8d3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
+--- !u!1001 &45185844
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: OnExitTransferParentOnStay
+ value:
+ objectReference: {fileID: 621748559}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: DontDeparentIfParentedByOtherBody
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 3246499739
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -60
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -49.1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: StationaryBody-B
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Size.z
+ value: 19.891119
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Center.x
+ value: -0.038006783
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Center.z
+ value: -0.13657665
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1001 &66674670
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: OnExitTransferParentOnStay
+ value:
+ objectReference: {fileID: 520394643}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: DontDeparentIfParentedByOtherBody
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 4013775021
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -60
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -33.32
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: StationaryBody-A
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Size.z
+ value: 19.906477
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Center.x
+ value: -0.038006783
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Center.z
+ value: 0.070830345
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1 &455857869
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 455857870}
+ - component: {fileID: 455857875}
+ - component: {fileID: 455857871}
+ m_Layer: 0
+ m_Name: ExtendedNetworkManager
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &455857870
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 455857869}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &455857871
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 455857869}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6960e84d07fb87f47956e7a81d71c4e6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ProtocolType: 0
+ m_UseWebSockets: 0
+ m_UseEncryption: 0
+ m_MaxPacketQueueSize: 128
+ m_MaxPayloadSize: 6144
+ m_HeartbeatTimeoutMS: 500
+ m_ConnectTimeoutMS: 1000
+ m_MaxConnectAttempts: 60
+ m_DisconnectTimeoutMS: 30000
+ ConnectionData:
+ Address: 127.0.0.1
+ Port: 7777
+ ServerListenAddress: 127.0.0.1
+ DebugSimulator:
+ PacketDelayMS: 0
+ PacketJitterMS: 0
+ PacketDropRate: 0
+--- !u!114 &455857875
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 455857869}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e4d8d44c602b97b47ba488a40c66267c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ NetworkManagerExpanded: 0
+ NetworkConfig:
+ ProtocolVersion: 0
+ NetworkTransport: {fileID: 455857871}
+ PlayerPrefab: {fileID: 8921789205124766477, guid: 8ae02ac62e2067144b8ff06d48aeb47a, type: 3}
+ Prefabs:
+ NetworkPrefabsLists:
+ - {fileID: 11400000, guid: aa82390bfdde2564f828b8e5be375282, type: 2}
+ TickRate: 30
+ ClientConnectionBufferTimeout: 10
+ ConnectionApproval: 0
+ ConnectionData:
+ EnableTimeResync: 0
+ TimeResyncInterval: 30
+ EnsureNetworkVariableLengthSafety: 0
+ EnableSceneManagement: 1
+ ForceSamePrefabs: 1
+ RecycleNetworkIds: 1
+ NetworkIdRecycleDelay: 120
+ RpcHashSize: 0
+ LoadSceneTimeOut: 120
+ SpawnTimeout: 10
+ EnableNetworkLogs: 1
+ NetworkTopology: 0
+ UseCMBService: 0
+ AutoSpawnPlayerPrefabClientSide: 1
+ NetworkProfilingMetrics: 1
+ OldPrefabList: []
+ RunInBackground: 1
+ LogLevel: 1
+ ExtendedNetworkManagerExpanded: 1
+ ConnectionType: 1
+ TargetFrameRate: 100
+ EnableVSync: 0
+ m_OriginalVSyncCount: 1
+--- !u!1 &479361661
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 479361665}
+ - component: {fileID: 479361664}
+ - component: {fileID: 479361663}
+ - component: {fileID: 479361662}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &479361662
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 479361661}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &479361663
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 479361661}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &479361664
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 479361661}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &479361665
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 479361661}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 28232986}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!114 &520394643 stripped
+MonoBehaviour:
+ m_CorrespondingSourceObject: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ m_PrefabInstance: {fileID: 45185844}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 374ac199eb18f0f468bc018a722775c2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &537610708
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 537610709}
+ m_Layer: 0
+ m_Name: PointA
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &537610709
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 537610708}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 10.9, y: -0.34, z: 70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &621748559 stripped
+MonoBehaviour:
+ m_CorrespondingSourceObject: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ m_PrefabInstance: {fileID: 66674670}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 374ac199eb18f0f468bc018a722775c2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &705507993
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 705507995}
+ - component: {fileID: 705507994}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &705507994
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 705507993}
+ m_Enabled: 1
+ serializedVersion: 11
+ m_Type: 1
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 1
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ForceVisible: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+ m_LightUnit: 1
+ m_LuxAtDistance: 1
+ m_EnableSpotReflector: 1
+--- !u!4 &705507995
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 705507993}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1001 &748186899
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.25
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511854, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_Name
+ value: SceneLevelGeometry
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+--- !u!1001 &857399335
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0.25
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotateDirection
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 1449196534
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -60.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 56.8
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: RotatingBody
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1 &946793187
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 946793188}
+ m_Layer: 0
+ m_Name: PointE
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &946793188
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 946793187}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 60.5, y: -0.34, z: 70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &963194225
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 963194228}
+ - component: {fileID: 963194227}
+ - component: {fileID: 963194226}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &963194226
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 963194225}
+ m_Enabled: 1
+--- !u!20 &963194227
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 963194225}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 0.066037714, g: 0.066037714, b: 0.066037714, a: 0}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &963194228
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 963194225}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.15212336, y: 0, z: 0, w: 0.98836154}
+ m_LocalPosition: {x: 0, y: 4.5, z: -5.5}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 17.5, y: 0, z: 0}
+--- !u!1 &1049334975
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1049334976}
+ m_Layer: 0
+ m_Name: PointF
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1049334976
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1049334975}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 60.5, y: -0.34, z: -68.5}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1055951929
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1055951930}
+ m_Layer: 0
+ m_Name: PointD
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1055951930
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1055951929}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 10.9, y: -0.34, z: -70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1184702125
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1184702128}
+ - component: {fileID: 1184702127}
+ - component: {fileID: 1184702126}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1184702126
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1184702125}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_SendPointerHoverToParent: 1
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1184702127
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1184702125}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!4 &1184702128
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1184702125}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1281267714
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1281267715}
+ m_Layer: 0
+ m_Name: PointB
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1281267715
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1281267714}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 10.9, y: 40.6, z: 70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &1591298748
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: ZAxisMove
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: PathMovement.Array.size
+ value: 4
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[0]'
+ value:
+ objectReference: {fileID: 537610708}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[1]'
+ value:
+ objectReference: {fileID: 1281267714}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[2]'
+ value:
+ objectReference: {fileID: 1727671589}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[3]'
+ value:
+ objectReference: {fileID: 1055951929}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 4258258070
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 10.9
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 70
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: 'ElevatorBody '
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1 &1727671589
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1727671590}
+ m_Layer: 0
+ m_Name: PointC
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1727671590
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1727671589}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 10.9, y: 40.6, z: -70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &1968567121
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: ZAxisMove
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0.3
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: PathMovement.Array.size
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotatingBodyLogicExpanded
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[0]'
+ value:
+ objectReference: {fileID: 946793187}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[1]'
+ value:
+ objectReference: {fileID: 1049334975}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 1259759422
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 60
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 70
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: MovingRotatingBody
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 963194228}
+ - {fileID: 705507995}
+ - {fileID: 455857870}
+ - {fileID: 479361665}
+ - {fileID: 1184702128}
+ - {fileID: 748186899}
+ - {fileID: 857399335}
+ - {fileID: 66674670}
+ - {fileID: 45185844}
+ - {fileID: 1968567121}
+ - {fileID: 1591298748}
+ - {fileID: 537610709}
+ - {fileID: 1281267715}
+ - {fileID: 1727671590}
+ - {fileID: 1055951930}
+ - {fileID: 946793188}
+ - {fileID: 1049334976}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scenes/CharacterController.unity.meta b/Examples/CharacterControllerMovingBodies/Assets/Scenes/CharacterController.unity.meta
new file mode 100644
index 0000000000..952bd1e9e1
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scenes/CharacterController.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9fc0d4010bbf28b4594072e72b8655ab
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scenes/SampleScenePrefabs.asset b/Examples/CharacterControllerMovingBodies/Assets/Scenes/SampleScenePrefabs.asset
new file mode 100644
index 0000000000..26e47a6487
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scenes/SampleScenePrefabs.asset
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e651dbb3fbac04af2b8f5abf007ddc23, type: 3}
+ m_Name: SampleScenePrefabs
+ m_EditorClassIdentifier:
+ IsDefault: 0
+ List: []
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scenes/SampleScenePrefabs.asset.meta b/Examples/CharacterControllerMovingBodies/Assets/Scenes/SampleScenePrefabs.asset.meta
new file mode 100644
index 0000000000..402e4425d7
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scenes/SampleScenePrefabs.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3d25a2b1f6c12ee47bf7601c2edd7e70
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts.meta b/Examples/CharacterControllerMovingBodies/Assets/Scripts.meta
new file mode 100644
index 0000000000..528b6db2ae
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8f0135d923712c4438b2facb3ce21fb6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/ExtendedNetworkManager.cs b/Examples/CharacterControllerMovingBodies/Assets/Scripts/ExtendedNetworkManager.cs
new file mode 100644
index 0000000000..2c291bbe89
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/ExtendedNetworkManager.cs
@@ -0,0 +1,427 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Unity.Netcode;
+using Unity.Services.Authentication;
+using Unity.Services.Core;
+using Unity.Services.Multiplayer;
+using UnityEngine;
+using SessionState = Unity.Services.Multiplayer.SessionState;
+
+#if UNITY_EDITOR
+using Unity.Netcode.Editor;
+using UnityEditor;
+
+///
+/// The custom editor for the component.
+///
+[CustomEditor(typeof(ExtendedNetworkManager), true)]
+[CanEditMultipleObjects]
+public class ExtendedNetworkManagerEditor : NetworkManagerEditor
+{
+ private SerializedProperty m_ConnectionType;
+ private SerializedProperty m_TargetFrameRate;
+ private SerializedProperty m_EnableVSync;
+
+ public override void OnEnable()
+ {
+ m_ConnectionType = serializedObject.FindProperty(nameof(ExtendedNetworkManager.ConnectionType));
+ m_TargetFrameRate = serializedObject.FindProperty(nameof(ExtendedNetworkManager.TargetFrameRate));
+ m_EnableVSync = serializedObject.FindProperty(nameof(ExtendedNetworkManager.EnableVSync));
+ base.OnEnable();
+ }
+
+ private void DisplayExtendedNetworkManagerProperties()
+ {
+ EditorGUILayout.PropertyField(m_ConnectionType);
+ EditorGUILayout.PropertyField(m_TargetFrameRate);
+ EditorGUILayout.PropertyField(m_EnableVSync);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var extendedNetworkManager = target as ExtendedNetworkManager;
+ // Handle switching the appropriate connection type based on the network topology
+ // Host connectio type can be set for client-server and distributed authority
+ // Live Service can only be used with distributed authority
+ // Client-server can only be used with a host connection type
+ var connectionTypes = Enum.GetValues(typeof(ExtendedNetworkManager.ConnectionTypes));
+ var connectionType = ExtendedNetworkManager.ConnectionTypes.LiveService;
+ if (m_ConnectionType.enumValueIndex > 0 && m_ConnectionType.enumValueIndex < connectionTypes.Length)
+ {
+ connectionType = (ExtendedNetworkManager.ConnectionTypes)connectionTypes.GetValue(m_ConnectionType.enumValueIndex);
+ }
+ void SetExpanded(bool expanded) { extendedNetworkManager.ExtendedNetworkManagerExpanded = expanded; };
+ DrawFoldOutGroup(extendedNetworkManager.GetType(), DisplayExtendedNetworkManagerProperties, extendedNetworkManager.ExtendedNetworkManagerExpanded, SetExpanded);
+
+ var updatedConnectedType = (ExtendedNetworkManager.ConnectionTypes)connectionTypes.GetValue(m_ConnectionType.enumValueIndex);
+ if (connectionType == updatedConnectedType && updatedConnectedType == ExtendedNetworkManager.ConnectionTypes.LiveService && extendedNetworkManager.NetworkConfig.NetworkTopology == NetworkTopologyTypes.ClientServer)
+ {
+ extendedNetworkManager.ConnectionType = ExtendedNetworkManager.ConnectionTypes.Host;
+ }
+ else if (connectionType == ExtendedNetworkManager.ConnectionTypes.Host && updatedConnectedType == ExtendedNetworkManager.ConnectionTypes.LiveService && extendedNetworkManager.NetworkConfig.NetworkTopology == NetworkTopologyTypes.ClientServer)
+ {
+ extendedNetworkManager.NetworkConfig.NetworkTopology = NetworkTopologyTypes.DistributedAuthority;
+ }
+ base.OnInspectorGUI();
+ }
+}
+#endif
+
+
+
+public class ExtendedNetworkManager : NetworkManager
+{
+#if UNITY_EDITOR
+ // Inspector view expand/collapse settings for this derived child class
+ [HideInInspector]
+ public bool ExtendedNetworkManagerExpanded;
+#endif
+
+ public static ExtendedNetworkManager Instance;
+
+ public enum ConnectionTypes
+ {
+ LiveService,
+ Host,
+ }
+ public ConnectionTypes ConnectionType;
+
+ public int TargetFrameRate = 100;
+ public bool EnableVSync = false;
+
+ [HideInInspector]
+ [SerializeField]
+ private int m_OriginalVSyncCount;
+
+#if UNITY_EDITOR
+
+ protected override void OnValidateComponent()
+ {
+ m_OriginalVSyncCount = QualitySettings.vSyncCount;
+ base.OnValidateComponent();
+ }
+#endif
+
+ private ISession m_CurrentSession;
+
+ private string m_SessionName;
+ private string m_ProfileName;
+ private Task m_SessionTask;
+
+ private enum ConnectionStates
+ {
+ None,
+ Connecting,
+ Connected,
+ }
+
+ private ConnectionStates m_ConnectionState;
+
+ public static string GetRandomString(int length)
+ {
+ var r = new System.Random();
+ return new string(Enumerable.Range(0, length).Select(_ => (char)r.Next('a', 'z')).ToArray());
+ }
+
+ public void SetFrameRate(int targetFrameRate, bool enableVsync)
+ {
+ Application.targetFrameRate = targetFrameRate;
+ QualitySettings.vSyncCount = enableVsync ? m_OriginalVSyncCount : 0;
+ }
+
+ private void Awake()
+ {
+ Screen.SetResolution((int)(Screen.currentResolution.width * 0.40f), (int)(Screen.currentResolution.height * 0.40f), FullScreenMode.Windowed);
+ SetFrameRate(TargetFrameRate, EnableVSync);
+ SetSingleton();
+ }
+
+ private async void Start()
+ {
+ OnClientConnectedCallback += OnClientConnected;
+ OnClientDisconnectCallback += OnClientDisconnect;
+ OnConnectionEvent += OnClientConnectionEvent;
+ if (UnityServices.Instance != null && UnityServices.Instance.State != ServicesInitializationState.Initialized)
+ {
+ await UnityServices.InitializeAsync();
+ }
+ if (!AuthenticationService.Instance.IsSignedIn)
+ {
+ AuthenticationService.Instance.SignInFailed += SignInFailed;
+ AuthenticationService.Instance.SignedIn += SignedIn;
+ if (string.IsNullOrEmpty(m_ProfileName))
+ {
+ m_ProfileName = GetRandomString(5);
+ }
+ AuthenticationService.Instance.SwitchProfile(m_ProfileName);
+ await AuthenticationService.Instance.SignInAnonymouslyAsync();
+ }
+ }
+
+ private void OnDestroy()
+ {
+ OnClientConnectedCallback -= OnClientConnected;
+ OnClientDisconnectCallback -= OnClientDisconnect;
+ OnConnectionEvent -= OnClientConnectionEvent;
+ }
+
+ private void SignedIn()
+ {
+ AuthenticationService.Instance.SignedIn -= SignedIn;
+ Debug.Log($"Signed in anonymously with profile {m_ProfileName}");
+ }
+
+ private void SignInFailed(RequestFailedException error)
+ {
+ AuthenticationService.Instance.SignInFailed -= SignInFailed;
+ Debug.LogError($"Failed to sign in {m_ProfileName} anonymously: {error}");
+ }
+
+ private void OnDrawLiveServiceGUI()
+ {
+ m_SessionName = GUILayout.TextField(m_SessionName);
+
+ if (GUILayout.Button("Create or Connect To Session"))
+ {
+ NetworkConfig.UseCMBService = true;
+ OnClientStopped += ClientStopped;
+ OnClientStarted += ClientStarted;
+ m_SessionTask = ConnectThroughLiveService();
+ m_ConnectionState = ConnectionStates.Connecting;
+ LogMessage($"Connecting to session {m_SessionName}...");
+ }
+ }
+
+ private void OnDrawDAHostGUI()
+ {
+ if (GUILayout.Button("Start Host"))
+ {
+ OnClientStopped += ClientStopped;
+ OnClientStarted += ClientStarted;
+ StartHost();
+ }
+
+ if (GUILayout.Button("Start Client"))
+ {
+ OnClientStopped += ClientStopped;
+ OnClientStarted += ClientStarted;
+ StartClient();
+ }
+ }
+
+ private void OnUpdateGUIDisconnected()
+ {
+ GUILayout.BeginArea(new Rect(10, 10, 300, 800));
+
+ GUILayout.Label("Session Name", GUILayout.Width(100));
+
+ var connectionType = ConnectionType;
+ if (NetworkConfig.NetworkTopology == NetworkTopologyTypes.ClientServer && connectionType != ConnectionTypes.Host)
+ {
+ connectionType = ConnectionTypes.Host;
+ }
+
+ switch (connectionType)
+ {
+ case ConnectionTypes.LiveService:
+ {
+ OnDrawLiveServiceGUI();
+ break;
+ }
+ case ConnectionTypes.Host:
+ {
+ OnDrawDAHostGUI();
+ break;
+ }
+ }
+
+ GUILayout.EndArea();
+
+ GUILayout.BeginArea(new Rect(10, Display.main.renderingHeight - 40, Display.main.renderingWidth - 10, 30));
+ var scenesPreloaded = new System.Text.StringBuilder();
+ scenesPreloaded.Append("Scenes Preloaded: ");
+ for (int i = 0; i < UnityEngine.SceneManagement.SceneManager.sceneCount; i++)
+ {
+ var scene = UnityEngine.SceneManagement.SceneManager.GetSceneAt(i);
+ scenesPreloaded.Append($"[{scene.name}]");
+ }
+ GUILayout.Label(scenesPreloaded.ToString());
+ GUILayout.EndArea();
+ }
+
+ private void OnUpdateGUIConnected()
+ {
+ if (CMBServiceConnection)
+ {
+ GUILayout.BeginArea(new Rect(10, 10, 800, 800));
+ GUILayout.Label($"Session: {m_SessionName}");
+ GUILayout.EndArea();
+ }
+ else
+ {
+ GUILayout.BeginArea(new Rect(10, 10, 800, 800));
+ if (DistributedAuthorityMode)
+ {
+ GUILayout.Label($"DAHosted Session");
+ }
+ else
+ {
+ GUILayout.Label($"Client-Server Session");
+ }
+
+ GUILayout.EndArea();
+ }
+
+ GUILayout.BeginArea(new Rect(Display.main.renderingWidth - 160, 10, 150, 80));
+
+ if (GUILayout.Button("Disconnect"))
+ {
+ if (m_CurrentSession != null && m_CurrentSession.State == SessionState.Connected)
+ {
+ m_CurrentSession.LeaveAsync();
+ m_CurrentSession = null;
+ }
+ else
+ {
+ Shutdown();
+ }
+ }
+
+ GUILayout.EndArea();
+ }
+
+ private void OnGUI()
+ {
+ var yAxisOffset = 10;
+ switch (m_ConnectionState)
+ {
+ case ConnectionStates.None:
+ {
+ yAxisOffset = 80;
+ OnUpdateGUIDisconnected();
+ break;
+ }
+ case ConnectionStates.Connected:
+ {
+ yAxisOffset = 40;
+ OnUpdateGUIConnected();
+ break;
+ }
+ }
+
+ GUILayout.BeginArea(new Rect(10, yAxisOffset, 600, 800));
+ if (m_MessageLogs.Count > 0)
+ {
+ GUILayout.Label("-----------(Log)-----------");
+ // Display any messages logged to screen
+ foreach (var messageLog in m_MessageLogs)
+ {
+ GUILayout.Label(messageLog.Message);
+ }
+ GUILayout.Label("---------------------------");
+ }
+ GUILayout.EndArea();
+ }
+
+ private void ClientStarted()
+ {
+ OnClientStarted -= ClientStarted;
+ m_ConnectionState = ConnectionStates.Connected;
+ LogMessage($"Connected to session {m_SessionName}.");
+ }
+
+ private void ClientStopped(bool isHost)
+ {
+ OnClientStopped -= ClientStopped;
+ m_ConnectionState = ConnectionStates.None;
+ m_SessionTask = null;
+ m_CurrentSession = null;
+ }
+
+ private async Task ConnectThroughLiveService()
+ {
+ try
+ {
+ var options = new SessionOptions()
+ {
+ Name = m_SessionName,
+ MaxPlayers = 32
+ }.WithDistributedAuthorityNetwork();
+
+ m_CurrentSession = await MultiplayerService.Instance.CreateOrJoinSessionAsync(m_SessionName, options);
+ return m_CurrentSession;
+ }
+ catch (Exception e)
+ {
+ LogMessage($"{e.Message}");
+ Debug.LogException(e);
+ }
+ return null;
+ }
+
+ private void Update()
+ {
+ if (m_MessageLogs.Count == 0)
+ {
+ return;
+ }
+
+ for (int i = m_MessageLogs.Count - 1; i >= 0; i--)
+ {
+ if (m_MessageLogs[i].ExpirationTime < Time.realtimeSinceStartup)
+ {
+ m_MessageLogs.RemoveAt(i);
+ }
+ }
+ }
+
+ private void OnClientConnectionEvent(NetworkManager networkManager, ConnectionEventData eventData)
+ {
+ LogMessage($"[{Time.realtimeSinceStartup}] Connection event {eventData.EventType} for Client-{eventData.ClientId}.");
+ }
+
+ private void OnClientConnected(ulong clientId)
+ {
+ LogMessage($"[{Time.realtimeSinceStartup}] Connected event invoked for Client-{clientId}.");
+ }
+
+ private void OnClientDisconnect(ulong clientId)
+ {
+ LogMessage($"[{Time.realtimeSinceStartup}] Disconnected event invoked for Client-{clientId}.");
+ }
+
+ private List m_MessageLogs = new List();
+
+ private class MessageLog
+ {
+ public string Message { get; private set; }
+ public float ExpirationTime { get; private set; }
+
+ public MessageLog(string msg, float timeToLive)
+ {
+ Message = msg;
+ ExpirationTime = Time.realtimeSinceStartup + timeToLive;
+ }
+ }
+
+ public void LogMessage(string msg, float timeToLive = 10.0f)
+ {
+ if (m_MessageLogs.Count > 0)
+ {
+ m_MessageLogs.Insert(0, new MessageLog(msg, timeToLive));
+ }
+ else
+ {
+ m_MessageLogs.Add(new MessageLog(msg, timeToLive));
+ }
+
+ Debug.Log(msg);
+ }
+
+ public ExtendedNetworkManager()
+ {
+ Instance = this;
+ }
+}
diff --git a/com.unity.netcode.gameobjects/Components/AssemblyInfo.cs.meta b/Examples/CharacterControllerMovingBodies/Assets/Scripts/ExtendedNetworkManager.cs.meta
similarity index 83%
rename from com.unity.netcode.gameobjects/Components/AssemblyInfo.cs.meta
rename to Examples/CharacterControllerMovingBodies/Assets/Scripts/ExtendedNetworkManager.cs.meta
index 36524ba59b..6c3e265735 100644
--- a/com.unity.netcode.gameobjects/Components/AssemblyInfo.cs.meta
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/ExtendedNetworkManager.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 5b8086dc75d86473f9e3c928dd773733
+guid: e4d8d44c602b97b47ba488a40c66267c
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/MoverScriptNoRigidbody.cs b/Examples/CharacterControllerMovingBodies/Assets/Scripts/MoverScriptNoRigidbody.cs
new file mode 100644
index 0000000000..555ed20113
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/MoverScriptNoRigidbody.cs
@@ -0,0 +1,363 @@
+using UnityEngine;
+using Unity.Netcode.Components;
+using Unity.Netcode;
+#if UNITY_EDITOR
+using Unity.Netcode.Editor;
+using UnityEditor;
+
+///
+/// The custom editor for the component.
+///
+[CustomEditor(typeof(MoverScriptNoRigidbody), true)]
+[CanEditMultipleObjects]
+public class MoverScriptNoRigidbodyEditor : NetworkTransformEditor
+{
+ private SerializedProperty m_Radius;
+ private SerializedProperty m_Increment;
+ private SerializedProperty m_RotateSpeed;
+ private SerializedProperty m_MovementSpeed;
+ private SerializedProperty m_AirSpeedFactor;
+ private SerializedProperty m_Gravity;
+ private SerializedProperty m_ContinualChildMotion;
+
+
+ public override void OnEnable()
+ {
+ m_Radius = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.SpawnRadius));
+ m_Increment = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.Increment));
+ m_RotateSpeed = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.RotationSpeed));
+ m_MovementSpeed = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.MovementSpeed));
+ m_AirSpeedFactor = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.AirSpeedFactor));
+ m_Gravity = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.Gravity));
+ m_ContinualChildMotion = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.ContinualChildMotion));
+
+ base.OnEnable();
+ }
+
+ private void DisplayerMoverScriptNoRigidbodyProperties()
+ {
+ EditorGUILayout.PropertyField(m_Radius);
+ EditorGUILayout.PropertyField(m_Increment);
+ EditorGUILayout.PropertyField(m_RotateSpeed);
+ EditorGUILayout.PropertyField(m_MovementSpeed);
+ EditorGUILayout.PropertyField(m_AirSpeedFactor);
+ EditorGUILayout.PropertyField(m_Gravity);
+ EditorGUILayout.PropertyField(m_ContinualChildMotion);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var moverScriptNoRigidbody = target as MoverScriptNoRigidbody;
+ void SetExpanded(bool expanded) { moverScriptNoRigidbody.MoverScriptNoRigidbodyExpanded = expanded; };
+ DrawFoldOutGroup(moverScriptNoRigidbody.GetType(), DisplayerMoverScriptNoRigidbodyProperties, moverScriptNoRigidbody.MoverScriptNoRigidbodyExpanded, SetExpanded);
+ base.OnInspectorGUI();
+ }
+}
+#endif
+
+///
+/// The player controller for the player prefab
+///
+public class MoverScriptNoRigidbody : NetworkTransform
+{
+#if UNITY_EDITOR
+ // Inspector view expand/collapse settings for this derived child class
+ [HideInInspector]
+ public bool MoverScriptNoRigidbodyExpanded;
+#endif
+
+ private static bool s_EnablePlayerParentingText = true;
+
+ [Tooltip("Radius range a player will spawn within.")]
+ [Range(1.0f, 40.0f)]
+ public float SpawnRadius = 10.0f;
+
+ [Range(0.001f, 10.0f)]
+ public float Increment = 1.0f;
+
+ [Tooltip("The rotation speed multiplier.")]
+ [Range(0.01f, 2.0f)]
+ public float RotationSpeed = 1.0f;
+
+ [Tooltip("The forward movement speed.")]
+ [Range(0.01f, 30.0f)]
+ public float MovementSpeed = 15.0f;
+
+ [Tooltip("The jump launching speed.")]
+ [Range(1.0f, 20f)]
+ public float JumpSpeed = 10.0f;
+
+ [Tooltip("Determines how much the player's motion is applied when in the air.")]
+ [Range(0.01f, 1.0f)]
+ public float AirSpeedFactor = 0.35f;
+
+ [Range(-20.0f, 20.0f)]
+ public float Gravity = -9.8f;
+
+ [Tooltip("When enabled, the child spheres will continually move. When disabled, the child spheres will only move when the player moves.")]
+ public bool ContinualChildMotion = true;
+
+
+ private TextMesh m_ParentedText;
+ private PlayerColor m_PlayerColor;
+ private float m_JumpDelay;
+ private Vector3 m_WorldMotion = Vector3.zero;
+ private Vector3 m_CameraOriginalPosition;
+ private Quaternion m_CameraOriginalRotation;
+ private CharacterController m_CharacterController;
+ private PlayerBallMotion m_PlayerBallMotion;
+
+ protected override void Awake()
+ {
+ m_ParentedText = GetComponentInChildren();
+ m_ParentedText?.gameObject.SetActive(false);
+ m_PlayerColor = GetComponent();
+ m_PlayerBallMotion = GetComponentInChildren();
+ base.Awake();
+ }
+
+ ///
+ /// Invoked after being instantiated, we can do other pre-spawn related
+ /// initilization tasks here.
+ ///
+ ///
+ /// This provides you with a reference to the current
+ /// since that is not set on the until it is spawned.
+ ///
+ ///
+ protected override void OnNetworkPreSpawn(ref NetworkManager networkManager)
+ {
+ m_CharacterController = GetComponent();
+ // By default, we always disable the CharacterController and only enable it on the
+ // owner/authority side.
+ m_CharacterController.enabled = false;
+ base.OnNetworkPreSpawn(ref networkManager);
+ }
+
+ ///
+ /// We are using post spawn to handle any final spawn initializations.
+ /// At this point we know all NetworkBehaviours on this instance has
+ /// been spawned.
+ ///
+ protected override void OnNetworkPostSpawn()
+ {
+ m_CharacterController.enabled = CanCommitToTransform;
+ if (CanCommitToTransform)
+ {
+ m_PlayerBallMotion.SetContinualMotion(ContinualChildMotion);
+ Random.InitState((int)System.DateTime.Now.Ticks);
+ transform.position += new Vector3(Random.Range(-SpawnRadius, SpawnRadius), 1.25f, Random.Range(0, SpawnRadius));
+ SetState(transform.position, null, null, false);
+ if (IsLocalPlayer)
+ {
+ NetworkObject.DontDestroyWithOwner = false;
+ m_CameraOriginalPosition = Camera.main.transform.position;
+ m_CameraOriginalRotation = Camera.main.transform.rotation;
+ Camera.main.transform.SetParent(transform, false);
+ }
+ }
+
+ if (NetworkObject.IsPlayerObject)
+ {
+ gameObject.name = $"Player-{OwnerClientId}";
+ }
+
+ m_ParentedText?.gameObject.SetActive(true);
+ UpdateParentedText();
+ base.OnNetworkPostSpawn();
+ }
+
+ public override void OnNetworkDespawn()
+ {
+ if (IsLocalPlayer)
+ {
+ m_CharacterController.enabled = false;
+ Camera.main.transform.SetParent(null, false);
+ Camera.main.transform.position = m_CameraOriginalPosition;
+ Camera.main.transform.rotation = m_CameraOriginalRotation;
+ }
+ base.OnNetworkDespawn();
+ }
+
+ ///
+ /// Bypass NetworkTransform's OnNetworkObjectParentChanged
+ ///
+ public override void OnNetworkObjectParentChanged(NetworkObject parentNetworkObject)
+ {
+ if (parentNetworkObject != null)
+ {
+ Debug.Log($"Parented under {parentNetworkObject.name}");
+ }
+ UpdateParentedText();
+ base.OnNetworkObjectParentChanged(parentNetworkObject);
+ }
+
+ ///
+ /// This method handles both client-server and distributed authority network topologies
+ /// client-server: If we are not the server, then we need to send an Rpc to the server to handle parenting since the Character controller is disabled on the server for all client CharacterControllers (i.e. won't trigger).
+ /// distributed authority: If we are the authority, then handle parenting locally.
+ ///
+ ///
+ public void SetParent(NetworkObject parent)
+ {
+ if ((!NetworkManager.DistributedAuthorityMode && (IsServer || (NetworkObject.AllowOwnerToParent && IsOwner))) || (NetworkManager.DistributedAuthorityMode && HasAuthority))
+ {
+ if (parent != null)
+ {
+ NetworkObject.TrySetParent(parent);
+ }
+ else
+ {
+ NetworkObject.TryRemoveParent();
+ }
+ }
+ else if (!NetworkManager.DistributedAuthorityMode && !IsServer)
+ {
+ SetParentRpc(new NetworkObjectReference(parent));
+ }
+ }
+
+ [Rpc(SendTo.Server)]
+ public void SetParentRpc(NetworkObjectReference parentReference, RpcParams rpcParams = default)
+ {
+ var parent = (NetworkObject)null;
+ parentReference.TryGet(out parent, NetworkManager);
+ if (parent != null)
+ {
+ NetworkObject.TrySetParent(parent);
+ }
+ else
+ {
+ NetworkObject.TryRemoveParent();
+ }
+ }
+
+
+ private void Update()
+ {
+ if (!IsSpawned || !CanCommitToTransform)
+ {
+ return;
+ }
+ ApplyInput();
+ }
+
+
+ private Vector3 m_PushMotion = Vector3.zero;
+ ///
+ /// Since has issues with collisions and rotating bodies,
+ /// we have to simulate the collision using triggers.
+ ///
+ ///
+ ///
+ ///
+ /// direction to push away from
+ public void PushAwayFrom(Vector3 normal)
+ {
+ m_PushMotion += normal * MovementSpeed * 0.10f * Time.deltaTime;
+ }
+
+ ///
+ /// Handles player input
+ ///
+ private void ApplyInput()
+ {
+ // Simple rotation:
+ // Since the forward vector is perpendicular to the right vector of the player, we can just
+ // apply the +/- value to our forward direction and lerp our right vector towards that direction
+ // in order to get a reasonably smooth rotation.
+ var rotation = transform.forward;
+ m_WorldMotion = Vector3.Lerp(m_WorldMotion, m_CharacterController.isGrounded ? Vector3.zero : Vector3.up * Gravity, Time.deltaTime * 2f);
+ var motion = m_WorldMotion * Time.deltaTime + m_PushMotion;
+ var moveMotion = 0.0f;
+
+ if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
+ {
+ motion += transform.forward * MovementSpeed * Time.deltaTime * (m_CharacterController.isGrounded ? 1.0f : AirSpeedFactor);
+ moveMotion = 1.0f;
+ m_CharacterController.Move(motion);
+ }
+ if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
+ {
+ motion += (transform.forward * -MovementSpeed) * Time.deltaTime * (m_CharacterController.isGrounded ? 1.0f : AirSpeedFactor);
+ moveMotion = -1.0f;
+ m_CharacterController.Move(motion);
+ }
+
+ if (!m_CharacterController.isGrounded || m_JumpDelay > Time.realtimeSinceStartup || m_PushMotion.magnitude > 0.01f)
+ {
+ m_CharacterController.Move(motion);
+ }
+
+ if (Input.GetKeyDown(KeyCode.Space) && m_CharacterController.isGrounded)
+ {
+ m_JumpDelay = Time.realtimeSinceStartup + 0.5f;
+ m_WorldMotion = motion + Vector3.up * JumpSpeed;
+ }
+
+ if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
+ {
+ transform.right = Vector3.Lerp(transform.right, rotation * RotationSpeed, Time.deltaTime).normalized;
+ }
+ if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
+ {
+ transform.right = Vector3.Lerp(transform.right, rotation * -RotationSpeed, Time.deltaTime).normalized;
+ }
+
+ // Enabled/Disable player name, transform space, and parent TextMesh
+ if (Input.GetKeyDown(KeyCode.P))
+ {
+ s_EnablePlayerParentingText = !s_EnablePlayerParentingText;
+ }
+
+ if (Input.GetKeyDown(KeyCode.C))
+ {
+ ContinualChildMotion = !ContinualChildMotion;
+ m_PlayerBallMotion.SetContinualMotion(ContinualChildMotion);
+ }
+
+ m_PushMotion = Vector3.Lerp(m_PushMotion, Vector3.zero, 0.35f);
+
+ m_PlayerBallMotion.HasMotion(moveMotion);
+ }
+
+ ///
+ /// Updates player TextMesh relative to each client's camera view
+ ///
+ private void OnGUI()
+ {
+ if (m_ParentedText != null)
+ {
+ if (m_ParentedText.gameObject.activeInHierarchy != s_EnablePlayerParentingText)
+ {
+ m_ParentedText.gameObject.SetActive(s_EnablePlayerParentingText);
+ }
+ if (s_EnablePlayerParentingText)
+ {
+ var position = Camera.main.transform.position;
+ position.y = m_ParentedText.transform.position.y;
+ m_ParentedText.transform.LookAt(position, transform.up);
+ m_ParentedText.transform.forward = -m_ParentedText.transform.forward;
+ }
+ }
+ }
+
+ ///
+ /// Updates the contents of the parented
+ ///
+ private void UpdateParentedText()
+ {
+ if (m_ParentedText)
+ {
+ m_ParentedText.color = m_PlayerColor.Color;
+ if (transform.parent)
+ {
+ m_ParentedText.text = $"{gameObject.name}\n Local Space\n Parent: {transform.parent.name}";
+ }
+ else
+ {
+ m_ParentedText.text = $"{gameObject.name}\n WorldSpace\n Parent: None";
+ }
+ }
+ }
+}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/MoverScriptNoRigidbody.cs.meta b/Examples/CharacterControllerMovingBodies/Assets/Scripts/MoverScriptNoRigidbody.cs.meta
new file mode 100644
index 0000000000..d1b709a9fb
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/MoverScriptNoRigidbody.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 5ce25b0b3f15e6446a88a85787c2f94a
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerBallMotion.cs b/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerBallMotion.cs
new file mode 100644
index 0000000000..7e525d6c33
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerBallMotion.cs
@@ -0,0 +1,126 @@
+using System.Collections.Generic;
+using Unity.Netcode.Components;
+using UnityEngine;
+using System.Linq;
+
+
+#if UNITY_EDITOR
+using Unity.Netcode.Editor;
+using UnityEditor;
+
+///
+/// The custom editor for the component.
+///
+[CustomEditor(typeof(PlayerBallMotion), true)]
+[CanEditMultipleObjects]
+public class PlayerBallMotionEditor : NetworkTransformEditor
+{
+ private SerializedProperty m_RotationAxis;
+ private SerializedProperty m_RotationSpeed;
+
+
+ public override void OnEnable()
+ {
+ m_RotationAxis = serializedObject.FindProperty(nameof(PlayerBallMotion.RotationAxis));
+ m_RotationSpeed = serializedObject.FindProperty(nameof(PlayerBallMotion.RotationSpeed));
+ base.OnEnable();
+ }
+
+ private void DrawPlayerBallMotionProperties()
+ {
+ EditorGUILayout.PropertyField(m_RotationAxis);
+ EditorGUILayout.PropertyField(m_RotationSpeed);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var playerBallMotion = target as PlayerBallMotion;
+ void SetExpanded(bool expanded) { playerBallMotion.ExpandPlayerBallMotion = expanded; };
+ DrawFoldOutGroup< PlayerBallMotion>(playerBallMotion.GetType(), DrawPlayerBallMotionProperties, playerBallMotion.ExpandPlayerBallMotion, SetExpanded);
+ base.OnInspectorGUI();
+ }
+}
+#endif
+
+public class PlayerBallMotion : NetworkTransform
+{
+#if UNITY_EDITOR
+ public bool ExpandPlayerBallMotion;
+ public bool ExpandNetworkTransform;
+#endif
+ public enum RotateAroundAxis
+ {
+ Up,
+ Right,
+ Forward
+ }
+
+ public RotateAroundAxis RotationAxis;
+ public float RotationSpeed = 1.5f;
+
+ private Vector3 m_AxisRotation = Vector3.zero;
+ private List m_Children;
+
+ private bool m_ContinualMotion;
+ private float m_CurrentRotionMotion = 1.0f;
+ public void SetContinualMotion(bool continualMotion)
+ {
+ m_ContinualMotion = continualMotion;
+ foreach (var child in m_Children)
+ {
+ child.SetContinualMotion(continualMotion);
+ }
+ }
+
+ protected override void Awake()
+ {
+ m_Children = GetComponentsInChildren().Where((c)=> c != this).ToList();
+ base.Awake();
+ }
+
+ private void SetRotationAixs()
+ {
+ switch (RotationAxis)
+ {
+ case RotateAroundAxis.Up:
+ {
+ m_AxisRotation = transform.parent.up;
+ break;
+ }
+ case RotateAroundAxis.Right:
+ {
+ m_AxisRotation = transform.parent.right;
+ break;
+ }
+ case RotateAroundAxis.Forward:
+ {
+ m_AxisRotation = transform.parent.forward;
+ break;
+ }
+ }
+ }
+
+ public void HasMotion(float direction)
+ {
+ if (direction == 0.0f)
+ {
+ if(!m_ContinualMotion)
+ {
+ return;
+ }
+ }
+ else
+ {
+ m_CurrentRotionMotion = RotationSpeed * direction;
+ }
+
+
+ transform.LookAt(transform.parent);
+ SetRotationAixs();
+ transform.RotateAround(transform.parent.position, m_AxisRotation, m_CurrentRotionMotion);
+ foreach(var child in m_Children)
+ {
+ child.HasMotion(direction);
+ }
+ }
+}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerBallMotion.cs.meta b/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerBallMotion.cs.meta
new file mode 100644
index 0000000000..407e0adf7b
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerBallMotion.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 792d7ce524eb358469373fe12babef88
\ No newline at end of file
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerColor.cs b/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerColor.cs
new file mode 100644
index 0000000000..3e2fa5b00a
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerColor.cs
@@ -0,0 +1,44 @@
+using System;
+using System.Collections.Generic;
+using Unity.Netcode;
+using UnityEngine;
+
+
+public class PlayerColor : NetworkBehaviour
+{
+ private static Color[] s_Colors = { Color.red, Color.green, Color.blue, Color.cyan, Color.magenta, Color.yellow};
+ public bool ApplyColorToChildren;
+ public Color Color { get; private set; }
+ public List IgnoreChildren;
+
+ public override void OnNetworkSpawn()
+ {
+ MeshRenderer meshRenderer = GetComponent();
+ ulong myId = GetComponent().OwnerClientId - (ulong)(NetworkManager.DistributedAuthorityMode && NetworkManager.CMBServiceConnection ? 1 : 0);
+ Color = s_Colors[myId % Convert.ToUInt64(s_Colors.Length)];
+ meshRenderer.material.color = Color;
+ if (ApplyColorToChildren)
+ {
+ var meshRenderers = GetComponentsInChildren();
+ foreach (var childMeshRenderer in meshRenderers)
+ {
+ if (IgnoreChildren != null && IgnoreChildren.Contains(childMeshRenderer.gameObject))
+ {
+ continue;
+ }
+ childMeshRenderer.material.color = Color;
+ }
+ }
+
+ if (IsLocalPlayer)
+ {
+ var gameObject = GameObject.Find("ServerHostClientDisplay");
+ if (gameObject != null)
+ {
+ var serverHost = gameObject.GetComponent();
+ serverHost?.SetColor(Color);
+ }
+ }
+ base.OnNetworkSpawn();
+ }
+}
diff --git a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVariableCollectionsTests.cs.meta b/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerColor.cs.meta
similarity index 83%
rename from com.unity.netcode.gameobjects/Tests/Runtime/NetworkVariableCollectionsTests.cs.meta
rename to Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerColor.cs.meta
index 8a0dfc0af6..90b6ca4628 100644
--- a/com.unity.netcode.gameobjects/Tests/Runtime/NetworkVariableCollectionsTests.cs.meta
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/PlayerColor.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 939ac41f36685f84e94a4b66ebbb6d8c
+guid: 8e5128237997be649af0cc87dd0eb563
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/RotatingBodyLogic.cs b/Examples/CharacterControllerMovingBodies/Assets/Scripts/RotatingBodyLogic.cs
new file mode 100644
index 0000000000..eaa32a77d6
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/RotatingBodyLogic.cs
@@ -0,0 +1,201 @@
+using System.Collections.Generic;
+using Unity.Netcode;
+using Unity.Netcode.Components;
+using UnityEngine;
+#if UNITY_EDITOR
+using Unity.Netcode.Editor;
+using UnityEditor;
+
+///
+/// The custom editor for the component.
+///
+[CustomEditor(typeof(RotatingBodyLogic), true)]
+[CanEditMultipleObjects]
+public class RotatingBodyLogicEditor : NetworkTransformEditor
+{
+ private SerializedProperty m_RotationSpeed;
+ private SerializedProperty m_RotateDirection;
+ private SerializedProperty m_OnExitTransferParentOnStay;
+ private SerializedProperty m_PathMotion;
+
+
+ public override void OnEnable()
+ {
+ m_RotationSpeed = serializedObject.FindProperty(nameof(RotatingBodyLogic.RotationSpeed));
+ m_RotateDirection = serializedObject.FindProperty(nameof(RotatingBodyLogic.RotateDirection));
+ m_OnExitTransferParentOnStay = serializedObject.FindProperty(nameof(RotatingBodyLogic.OnExitTransferParentOnStay));
+ m_PathMotion = serializedObject.FindProperty(nameof(RotatingBodyLogic.PathMovement));
+ base.OnEnable();
+ }
+
+ private void DisplayRotatingBodyLogicProperties()
+ {
+ EditorGUILayout.PropertyField(m_RotationSpeed);
+ EditorGUILayout.PropertyField(m_RotateDirection);
+ EditorGUILayout.PropertyField(m_OnExitTransferParentOnStay);
+ EditorGUILayout.PropertyField(m_PathMotion);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var rotatingBodyLogic = target as RotatingBodyLogic;
+ void SetExpanded(bool expanded) { rotatingBodyLogic.RotatingBodyLogicExpanded = expanded; };
+ DrawFoldOutGroup(rotatingBodyLogic.GetType(), DisplayRotatingBodyLogicProperties, rotatingBodyLogic.RotatingBodyLogicExpanded, SetExpanded);
+ base.OnInspectorGUI();
+ }
+}
+#endif
+
+///
+/// Handles rotating the large in-scene placed platform/tunnels and parenting/deparenting players
+///
+public class RotatingBodyLogic : NetworkTransform
+{
+#if UNITY_EDITOR
+ // Inspector view expand/collapse settings for this derived child class
+ [HideInInspector]
+ public bool RotatingBodyLogicExpanded;
+#endif
+
+ public enum RotationDirections
+ {
+ Clockwise,
+ CounterClockwise
+ }
+
+ [Range(0.0f, 2.0f)]
+ public float RotationSpeed = 1.0f;
+ public RotationDirections RotateDirection;
+ public RotatingBodyLogic OnExitTransferParentOnStay;
+ public List PathMovement;
+
+ private TagHandle m_TagHandle;
+ private float m_RotationDirection;
+
+ private int m_CurrentPathObject = -1;
+ private GameObject m_CurrentNavPoint;
+
+ protected override void OnNetworkPreSpawn(ref NetworkManager networkManager)
+ {
+ m_TagHandle = TagHandle.GetExistingTag("Player");
+ m_RotationDirection = RotateDirection == RotationDirections.Clockwise ? 1.0f : -1.0f;
+ SetNextPoint();
+ base.OnNetworkPreSpawn(ref networkManager);
+ }
+
+ private void SetNextPoint()
+ {
+ if (PathMovement == null || PathMovement.Count == 0)
+ {
+ return;
+ }
+ m_CurrentPathObject++;
+ m_CurrentPathObject %= PathMovement.Count;
+ m_CurrentNavPoint = PathMovement[m_CurrentPathObject];
+ }
+
+
+ ///
+ /// When triggered, the player is parented under the rotating body.
+ ///
+ ///
+ /// This is only triggered on the owner side since we disable the CharacterController
+ /// on all non-owner instances.
+ ///
+ private void OnTriggerEnter(Collider other)
+ {
+ if (!IsSpawned || !other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+ var nonRigidPlayerMover = other.GetComponent();
+ if (nonRigidPlayerMover != null)
+ {
+ nonRigidPlayerMover.SetParent(NetworkObject);
+ }
+ }
+
+ // This is used to handle NetworkObject to NetworkObject parenting detection
+ private List m_TriggerStayBodies = new List();
+
+ private void OnTriggerStay(Collider other)
+ {
+ if (!IsSpawned || !other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+ var nonRigidPlayerMover = other.GetComponent();
+ if (nonRigidPlayerMover != null)
+ {
+ if (!m_TriggerStayBodies.Contains(nonRigidPlayerMover))
+ {
+ m_TriggerStayBodies.Add(nonRigidPlayerMover);
+ }
+ }
+ }
+
+ internal bool HandleParentingForTriggerStayBodies(MoverScriptNoRigidbody moverScriptNoRigidbody)
+ {
+ if (m_TriggerStayBodies.Contains(moverScriptNoRigidbody))
+ {
+ moverScriptNoRigidbody.SetParent(NetworkObject);
+ return true;
+ }
+ return false;
+ }
+
+ ///
+ /// When triggered, the player is deparented from the rotating body.
+ ///
+ ///
+ /// This is only triggered on the owner side since we disable the CharacterController
+ /// on all non-owner instances.
+ ///
+ private void OnTriggerExit(Collider other)
+ {
+ if (!IsSpawned || !other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+
+ var nonRigidPlayerMover = other.GetComponent();
+ if (nonRigidPlayerMover != null)
+ {
+ m_TriggerStayBodies.Remove(nonRigidPlayerMover);
+ if (OnExitTransferParentOnStay && OnExitTransferParentOnStay.HandleParentingForTriggerStayBodies(nonRigidPlayerMover))
+ {
+ return;
+ }
+ // Otherwise, set parent back to root
+ nonRigidPlayerMover.SetParent(null);
+ }
+ }
+
+ ///
+ /// We rotate the body during late update to avoid fighting between the host/owner (depending upon network topology)
+ /// motion and the body's motion/rotation.
+ ///
+ private void LateUpdate()
+ {
+ if (!IsSpawned || !CanCommitToTransform)
+ {
+ return;
+ }
+
+ if (m_CurrentNavPoint != null)
+ {
+ if (Vector3.Distance(m_CurrentNavPoint.transform.position, transform.position) <= 0.05f)
+ {
+ SetNextPoint();
+ }
+
+ var direction = (m_CurrentNavPoint.transform.position - transform.position).normalized;
+ transform.position = Vector3.Lerp(transform.position, transform.position + direction * 10, Time.deltaTime);
+ }
+
+ if (RotationSpeed > 0.0f)
+ {
+ transform.right = Vector3.Lerp(transform.right, transform.forward * m_RotationDirection, Time.deltaTime * RotationSpeed);
+ }
+ }
+}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/RotatingBodyLogic.cs.meta b/Examples/CharacterControllerMovingBodies/Assets/Scripts/RotatingBodyLogic.cs.meta
new file mode 100644
index 0000000000..ce0ea09165
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/RotatingBodyLogic.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 374ac199eb18f0f468bc018a722775c2
\ No newline at end of file
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/ServerHostClientText.cs b/Examples/CharacterControllerMovingBodies/Assets/Scripts/ServerHostClientText.cs
new file mode 100644
index 0000000000..e2ff41dfa6
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/ServerHostClientText.cs
@@ -0,0 +1,79 @@
+using Unity.Netcode;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class ServerHostClientText : NetworkBehaviour
+{
+ private Text m_DisplayText;
+
+ private Color m_Color;
+ private Color m_ColorAlpha;
+ private Vector3 m_LocalPosition;
+
+ public void SetColor(Color color)
+ {
+ m_Color = color;
+ m_ColorAlpha = color;
+ m_ColorAlpha.a = 0.35f;
+ }
+
+ private void Awake()
+ {
+ m_LocalPosition = transform.localPosition;
+ m_DisplayText = GetComponent();
+ }
+
+ private void Start()
+ {
+ if (m_DisplayText != null)
+ {
+ m_DisplayText.text = string.Empty;
+ SetColor(m_DisplayText.color);
+ }
+ }
+
+ public override void OnNetworkSpawn()
+ {
+ if (m_DisplayText != null)
+ {
+ if (NetworkManager.IsServer)
+ {
+ m_DisplayText.text = NetworkManager.IsHost ? "Host" : "Server";
+ }
+ else if (NetworkManager.IsClient)
+ {
+ m_DisplayText.text = $"Client-{NetworkManager.LocalClientId}";
+ }
+ }
+ transform.localPosition = m_LocalPosition;
+ }
+
+ public override void OnNetworkDespawn()
+ {
+ if (m_DisplayText != null)
+ {
+ m_DisplayText.text = string.Empty;
+ }
+ base.OnNetworkDespawn();
+ }
+
+ private bool m_LastFocusedValue;
+ private void OnGUI()
+ {
+ if (!IsSpawned || m_LastFocusedValue == Application.isFocused)
+ {
+ return;
+ }
+
+ m_LastFocusedValue = Application.isFocused;
+
+ if (m_LastFocusedValue)
+ {
+ m_DisplayText.color = m_Color;
+ }
+ else
+ {
+ m_DisplayText.color = m_ColorAlpha;
+ }
+ }
+}
diff --git a/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkSceneManagerFixValidationTests.cs.meta b/Examples/CharacterControllerMovingBodies/Assets/Scripts/ServerHostClientText.cs.meta
similarity index 83%
rename from testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkSceneManagerFixValidationTests.cs.meta
rename to Examples/CharacterControllerMovingBodies/Assets/Scripts/ServerHostClientText.cs.meta
index 9e35df982a..081f5a96a8 100644
--- a/testproject/Assets/Tests/Runtime/NetworkSceneManager/NetworkSceneManagerFixValidationTests.cs.meta
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/ServerHostClientText.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 501dfd0e05e51184e8938bba980d3f88
+guid: 6637cd674efb56a48a3d4d545d23a8d3
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/TriggerPush.cs b/Examples/CharacterControllerMovingBodies/Assets/Scripts/TriggerPush.cs
new file mode 100644
index 0000000000..ade22f3ed6
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/TriggerPush.cs
@@ -0,0 +1,63 @@
+using UnityEngine;
+
+///
+/// This helper class is used to push a player away from a rotating body.
+/// s without a don't
+/// handle collision with rotating bodies. This simulates a "collision".
+///
+public class TriggerPush : MonoBehaviour
+{
+ public enum RightOrLeft
+ {
+ Right,
+ Left
+ }
+
+ [Tooltip("Determines if this trigger will push the player to the left or right of the root transform")]
+ public RightOrLeft PushDirection;
+
+ private TagHandle m_TagHandle;
+
+ private void Awake()
+ {
+ m_TagHandle = TagHandle.GetExistingTag("Player");
+ }
+
+ private void PushObject(Collider other, bool isInside = false)
+ {
+ var nonRigidPlayerMover = other.GetComponent();
+ if (nonRigidPlayerMover != null && nonRigidPlayerMover.CanCommitToTransform)
+ {
+ // We determine the direction to push and if within a trigger we push a little more to prevent from
+ // completely clipping through the object.
+ var direction = (PushDirection == RightOrLeft.Right ? 1.0f : -1.0f) * (isInside ? 1.75f : 1.0f);
+ nonRigidPlayerMover.PushAwayFrom(transform.parent.right * direction);
+ }
+ }
+
+ ///
+ /// Pushes the player away from the object
+ ///
+ private void OnTriggerEnter(Collider other)
+ {
+ if (!other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+ PushObject(other);
+ }
+
+ ///
+ /// When the trigger is in a "stay" state, we need to signal that
+ /// the amount to "push away" should be increased.
+ ///
+ ///
+ private void OnTriggerStay(Collider other)
+ {
+ if (!other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+ PushObject(other, true);
+ }
+}
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Scripts/TriggerPush.cs.meta b/Examples/CharacterControllerMovingBodies/Assets/Scripts/TriggerPush.cs.meta
new file mode 100644
index 0000000000..7c07b1ebfc
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Scripts/TriggerPush.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 2c40721ca0fd31645a742e5ad0e0cdc5
\ No newline at end of file
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures.meta b/Examples/CharacterControllerMovingBodies/Assets/Textures.meta
new file mode 100644
index 0000000000..84caff0700
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Textures.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 22c34a08d52a0644fae5e90dbcc0ba52
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/GridPattern.png b/Examples/CharacterControllerMovingBodies/Assets/Textures/GridPattern.png
new file mode 100644
index 0000000000..e2f648aacc
Binary files /dev/null and b/Examples/CharacterControllerMovingBodies/Assets/Textures/GridPattern.png differ
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/GridPattern.png.meta b/Examples/CharacterControllerMovingBodies/Assets/Textures/GridPattern.png.meta
new file mode 100644
index 0000000000..305bd2392c
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Textures/GridPattern.png.meta
@@ -0,0 +1,153 @@
+fileFormatVersion: 2
+guid: a092c5fa8c60ed04aa1d72555f1740bc
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 12
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: WebGL
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Windows Store Apps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_BaseMap.png b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_BaseMap.png
new file mode 100644
index 0000000000..3f311d2225
Binary files /dev/null and b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_BaseMap.png differ
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_BaseMap.png.meta b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_BaseMap.png.meta
new file mode 100644
index 0000000000..3a05497054
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_BaseMap.png.meta
@@ -0,0 +1,130 @@
+fileFormatVersion: 2
+guid: e71f43865e91e6b418bd0d67be2445dc
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Emissive.png b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Emissive.png
new file mode 100644
index 0000000000..df81ac1268
Binary files /dev/null and b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Emissive.png differ
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Emissive.png.meta b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Emissive.png.meta
new file mode 100644
index 0000000000..bcfe13d8d7
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Emissive.png.meta
@@ -0,0 +1,130 @@
+fileFormatVersion: 2
+guid: 8bf2cf149563066489e749ea032dbca7
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Normal.png b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Normal.png
new file mode 100644
index 0000000000..1d060fba61
Binary files /dev/null and b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Normal.png differ
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Normal.png.meta b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Normal.png.meta
new file mode 100644
index 0000000000..4a5b2ad61c
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_01_Normal.png.meta
@@ -0,0 +1,130 @@
+fileFormatVersion: 2
+guid: b94463ba36040ec4082132c54dd1bbad
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_02_BaseMap.png b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_02_BaseMap.png
new file mode 100644
index 0000000000..b3069b03d1
Binary files /dev/null and b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_02_BaseMap.png differ
diff --git a/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_02_BaseMap.png.meta b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_02_BaseMap.png.meta
new file mode 100644
index 0000000000..7fbedef673
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Assets/Textures/Grid_02_BaseMap.png.meta
@@ -0,0 +1,130 @@
+fileFormatVersion: 2
+guid: 844faea9c35b2464c8ecb09f66e2e2f8
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/CharacterControllerMovingBodies/Packages/manifest.json b/Examples/CharacterControllerMovingBodies/Packages/manifest.json
new file mode 100644
index 0000000000..de9d632e57
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Packages/manifest.json
@@ -0,0 +1,55 @@
+{
+ "dependencies": {
+ "com.unity.2d.sprite": "1.0.0",
+ "com.unity.2d.tilemap": "1.0.0",
+ "com.unity.ads": "4.4.2",
+ "com.unity.ai.navigation": "2.0.3",
+ "com.unity.analytics": "3.8.1",
+ "com.unity.collab-proxy": "2.4.4",
+ "com.unity.feature.development": "1.0.2",
+ "com.unity.ide.rider": "3.0.31",
+ "com.unity.ide.visualstudio": "2.0.22",
+ "com.unity.netcode.gameobjects": "https://github.com/Unity-Technologies/com.unity.netcode.gameobjects.git?path=com.unity.netcode.gameobjects#develop-2.0.0",
+ "com.unity.purchasing": "4.12.2",
+ "com.unity.services.multiplayer": "1.0.0-pre.1",
+ "com.unity.test-framework": "1.4.5",
+ "com.unity.timeline": "1.8.7",
+ "com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.9",
+ "com.unity.transport": "2.3.0",
+ "com.unity.ugui": "2.0.0",
+ "com.unity.visualscripting": "1.9.4",
+ "com.unity.xr.legacyinputhelpers": "2.1.10",
+ "com.unity.modules.accessibility": "1.0.0",
+ "com.unity.modules.ai": "1.0.0",
+ "com.unity.modules.androidjni": "1.0.0",
+ "com.unity.modules.animation": "1.0.0",
+ "com.unity.modules.assetbundle": "1.0.0",
+ "com.unity.modules.audio": "1.0.0",
+ "com.unity.modules.cloth": "1.0.0",
+ "com.unity.modules.director": "1.0.0",
+ "com.unity.modules.imageconversion": "1.0.0",
+ "com.unity.modules.imgui": "1.0.0",
+ "com.unity.modules.jsonserialize": "1.0.0",
+ "com.unity.modules.particlesystem": "1.0.0",
+ "com.unity.modules.physics": "1.0.0",
+ "com.unity.modules.physics2d": "1.0.0",
+ "com.unity.modules.screencapture": "1.0.0",
+ "com.unity.modules.terrain": "1.0.0",
+ "com.unity.modules.terrainphysics": "1.0.0",
+ "com.unity.modules.tilemap": "1.0.0",
+ "com.unity.modules.ui": "1.0.0",
+ "com.unity.modules.uielements": "1.0.0",
+ "com.unity.modules.umbra": "1.0.0",
+ "com.unity.modules.unityanalytics": "1.0.0",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequestaudio": "1.0.0",
+ "com.unity.modules.unitywebrequesttexture": "1.0.0",
+ "com.unity.modules.unitywebrequestwww": "1.0.0",
+ "com.unity.modules.vehicles": "1.0.0",
+ "com.unity.modules.video": "1.0.0",
+ "com.unity.modules.vr": "1.0.0",
+ "com.unity.modules.wind": "1.0.0",
+ "com.unity.modules.xr": "1.0.0"
+ }
+}
diff --git a/Examples/CharacterControllerMovingBodies/ProjectSettings/EditorBuildSettings.asset b/Examples/CharacterControllerMovingBodies/ProjectSettings/EditorBuildSettings.asset
new file mode 100644
index 0000000000..a6cd971819
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/ProjectSettings/EditorBuildSettings.asset
@@ -0,0 +1,12 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1045 &1
+EditorBuildSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Scenes:
+ - enabled: 1
+ path: Assets/Scenes/CharacterController.unity
+ guid: 9fc0d4010bbf28b4594072e72b8655ab
+ m_configObjects: {}
+ m_UseUCBPForAssetBundles: 0
diff --git a/Examples/CharacterControllerMovingBodies/ProjectSettings/ProjectSettings.asset b/Examples/CharacterControllerMovingBodies/ProjectSettings/ProjectSettings.asset
new file mode 100644
index 0000000000..b12ab6ff29
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/ProjectSettings/ProjectSettings.asset
@@ -0,0 +1,687 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!129 &1
+PlayerSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 28
+ productGUID: 6859c206e4885eb4d9a885722be3daa1
+ AndroidProfiler: 0
+ AndroidFilterTouchesWhenObscured: 0
+ AndroidEnableSustainedPerformanceMode: 0
+ defaultScreenOrientation: 4
+ targetDevice: 2
+ useOnDemandResources: 0
+ accelerometerFrequency: 60
+ companyName: DefaultCompany
+ productName: CharacterControllerMovingBodies
+ defaultCursor: {fileID: 0}
+ cursorHotspot: {x: 0, y: 0}
+ m_SplashScreenBackgroundColor: {r: 0.12156863, g: 0.12156863, b: 0.1254902, a: 1}
+ m_ShowUnitySplashScreen: 1
+ m_ShowUnitySplashLogo: 1
+ m_SplashScreenOverlayOpacity: 1
+ m_SplashScreenAnimation: 1
+ m_SplashScreenLogoStyle: 1
+ m_SplashScreenDrawMode: 0
+ m_SplashScreenBackgroundAnimationZoom: 1
+ m_SplashScreenLogoAnimationZoom: 1
+ m_SplashScreenBackgroundLandscapeAspect: 1
+ m_SplashScreenBackgroundPortraitAspect: 1
+ m_SplashScreenBackgroundLandscapeUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenBackgroundPortraitUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenLogos: []
+ m_VirtualRealitySplashScreen: {fileID: 0}
+ m_HolographicTrackingLossScreen: {fileID: 0}
+ defaultScreenWidth: 1920
+ defaultScreenHeight: 1080
+ defaultScreenWidthWeb: 960
+ defaultScreenHeightWeb: 600
+ m_StereoRenderingPath: 0
+ m_ActiveColorSpace: 0
+ unsupportedMSAAFallback: 0
+ m_SpriteBatchVertexThreshold: 300
+ m_MTRendering: 1
+ mipStripping: 0
+ numberOfMipsStripped: 0
+ numberOfMipsStrippedPerMipmapLimitGroup: {}
+ m_StackTraceTypes: 010000000100000001000000010000000100000001000000
+ iosShowActivityIndicatorOnLoading: -1
+ androidShowActivityIndicatorOnLoading: -1
+ iosUseCustomAppBackgroundBehavior: 0
+ allowedAutorotateToPortrait: 1
+ allowedAutorotateToPortraitUpsideDown: 1
+ allowedAutorotateToLandscapeRight: 1
+ allowedAutorotateToLandscapeLeft: 1
+ useOSAutorotation: 1
+ use32BitDisplayBuffer: 1
+ preserveFramebufferAlpha: 0
+ disableDepthAndStencilBuffers: 0
+ androidStartInFullscreen: 1
+ androidRenderOutsideSafeArea: 1
+ androidUseSwappy: 1
+ androidBlitType: 0
+ androidResizeableActivity: 1
+ androidDefaultWindowWidth: 1920
+ androidDefaultWindowHeight: 1080
+ androidMinimumWindowWidth: 400
+ androidMinimumWindowHeight: 300
+ androidFullscreenMode: 1
+ androidAutoRotationBehavior: 1
+ androidPredictiveBackSupport: 0
+ androidApplicationEntry: 2
+ defaultIsNativeResolution: 1
+ macRetinaSupport: 1
+ runInBackground: 0
+ captureSingleScreen: 0
+ muteOtherAudioSources: 0
+ Prepare IOS For Recording: 0
+ Force IOS Speakers When Recording: 0
+ deferSystemGesturesMode: 0
+ hideHomeButton: 0
+ submitAnalytics: 1
+ usePlayerLog: 1
+ dedicatedServerOptimizations: 1
+ bakeCollisionMeshes: 0
+ forceSingleInstance: 0
+ useFlipModelSwapchain: 1
+ resizableWindow: 0
+ useMacAppStoreValidation: 0
+ macAppStoreCategory: public.app-category.games
+ gpuSkinning: 1
+ meshDeformation: 1
+ xboxPIXTextureCapture: 0
+ xboxEnableAvatar: 0
+ xboxEnableKinect: 0
+ xboxEnableKinectAutoTracking: 0
+ xboxEnableFitness: 0
+ visibleInBackground: 1
+ allowFullscreenSwitch: 1
+ fullscreenMode: 1
+ xboxSpeechDB: 0
+ xboxEnableHeadOrientation: 0
+ xboxEnableGuest: 0
+ xboxEnablePIXSampling: 0
+ metalFramebufferOnly: 0
+ xboxOneResolution: 0
+ xboxOneSResolution: 0
+ xboxOneXResolution: 3
+ xboxOneMonoLoggingLevel: 0
+ xboxOneLoggingLevel: 1
+ xboxOneDisableEsram: 0
+ xboxOneEnableTypeOptimization: 0
+ xboxOnePresentImmediateThreshold: 0
+ switchQueueCommandMemory: 1048576
+ switchQueueControlMemory: 16384
+ switchQueueComputeMemory: 262144
+ switchNVNShaderPoolsGranularity: 33554432
+ switchNVNDefaultPoolsGranularity: 16777216
+ switchNVNOtherPoolsGranularity: 16777216
+ switchGpuScratchPoolGranularity: 2097152
+ switchAllowGpuScratchShrinking: 0
+ switchNVNMaxPublicTextureIDCount: 0
+ switchNVNMaxPublicSamplerIDCount: 0
+ switchMaxWorkerMultiple: 8
+ switchNVNGraphicsFirmwareMemory: 32
+ vulkanNumSwapchainBuffers: 3
+ vulkanEnableSetSRGBWrite: 0
+ vulkanEnablePreTransform: 0
+ vulkanEnableLateAcquireNextImage: 0
+ vulkanEnableCommandBufferRecycling: 1
+ loadStoreDebugModeEnabled: 0
+ visionOSBundleVersion: 1.0
+ tvOSBundleVersion: 1.0
+ bundleVersion: 1.0
+ preloadedAssets: []
+ metroInputSource: 0
+ wsaTransparentSwapchain: 0
+ m_HolographicPauseOnTrackingLoss: 1
+ xboxOneDisableKinectGpuReservation: 1
+ xboxOneEnable7thCore: 1
+ vrSettings:
+ enable360StereoCapture: 0
+ isWsaHolographicRemotingEnabled: 0
+ enableFrameTimingStats: 0
+ enableOpenGLProfilerGPURecorders: 1
+ allowHDRDisplaySupport: 0
+ useHDRDisplay: 0
+ hdrBitDepth: 0
+ m_ColorGamuts: 00000000
+ targetPixelDensity: 30
+ resolutionScalingMode: 0
+ resetResolutionOnWindowResize: 0
+ androidSupportedAspectRatio: 1
+ androidMaxAspectRatio: 2.1
+ androidMinAspectRatio: 1
+ applicationIdentifier:
+ Standalone: com.DefaultCompany.CharacterControllerMovingBodies
+ buildNumber:
+ Standalone: 0
+ VisionOS: 0
+ iPhone: 0
+ tvOS: 0
+ overrideDefaultApplicationIdentifier: 0
+ AndroidBundleVersionCode: 1
+ AndroidMinSdkVersion: 23
+ AndroidTargetSdkVersion: 0
+ AndroidPreferredInstallLocation: 1
+ aotOptions:
+ stripEngineCode: 1
+ iPhoneStrippingLevel: 0
+ iPhoneScriptCallOptimization: 0
+ ForceInternetPermission: 0
+ ForceSDCardPermission: 0
+ CreateWallpaper: 0
+ androidSplitApplicationBinary: 0
+ keepLoadedShadersAlive: 0
+ StripUnusedMeshComponents: 0
+ strictShaderVariantMatching: 0
+ VertexChannelCompressionMask: 4054
+ iPhoneSdkVersion: 988
+ iOSSimulatorArchitecture: 0
+ iOSTargetOSVersionString: 13.0
+ tvOSSdkVersion: 0
+ tvOSSimulatorArchitecture: 0
+ tvOSRequireExtendedGameController: 0
+ tvOSTargetOSVersionString: 13.0
+ VisionOSSdkVersion: 0
+ VisionOSTargetOSVersionString: 1.0
+ uIPrerenderedIcon: 0
+ uIRequiresPersistentWiFi: 0
+ uIRequiresFullScreen: 1
+ uIStatusBarHidden: 1
+ uIExitOnSuspend: 0
+ uIStatusBarStyle: 0
+ appleTVSplashScreen: {fileID: 0}
+ appleTVSplashScreen2x: {fileID: 0}
+ tvOSSmallIconLayers: []
+ tvOSSmallIconLayers2x: []
+ tvOSLargeIconLayers: []
+ tvOSLargeIconLayers2x: []
+ tvOSTopShelfImageLayers: []
+ tvOSTopShelfImageLayers2x: []
+ tvOSTopShelfImageWideLayers: []
+ tvOSTopShelfImageWideLayers2x: []
+ iOSLaunchScreenType: 0
+ iOSLaunchScreenPortrait: {fileID: 0}
+ iOSLaunchScreenLandscape: {fileID: 0}
+ iOSLaunchScreenBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreenFillPct: 100
+ iOSLaunchScreenSize: 100
+ iOSLaunchScreeniPadType: 0
+ iOSLaunchScreeniPadImage: {fileID: 0}
+ iOSLaunchScreeniPadBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreeniPadFillPct: 100
+ iOSLaunchScreeniPadSize: 100
+ iOSLaunchScreenCustomStoryboardPath:
+ iOSLaunchScreeniPadCustomStoryboardPath:
+ iOSDeviceRequirements: []
+ iOSURLSchemes: []
+ macOSURLSchemes: []
+ iOSBackgroundModes: 0
+ iOSMetalForceHardShadows: 0
+ metalEditorSupport: 1
+ metalAPIValidation: 1
+ metalCompileShaderBinary: 0
+ iOSRenderExtraFrameOnPause: 0
+ iosCopyPluginsCodeInsteadOfSymlink: 0
+ appleDeveloperTeamID:
+ iOSManualSigningProvisioningProfileID:
+ tvOSManualSigningProvisioningProfileID:
+ VisionOSManualSigningProvisioningProfileID:
+ iOSManualSigningProvisioningProfileType: 0
+ tvOSManualSigningProvisioningProfileType: 0
+ VisionOSManualSigningProvisioningProfileType: 0
+ appleEnableAutomaticSigning: 0
+ iOSRequireARKit: 0
+ iOSAutomaticallyDetectAndAddCapabilities: 1
+ appleEnableProMotion: 0
+ shaderPrecisionModel: 0
+ clonedFromGUID: 00000000000000000000000000000000
+ templatePackageId:
+ templateDefaultScene:
+ useCustomMainManifest: 0
+ useCustomLauncherManifest: 0
+ useCustomMainGradleTemplate: 0
+ useCustomLauncherGradleManifest: 0
+ useCustomBaseGradleTemplate: 0
+ useCustomGradlePropertiesTemplate: 0
+ useCustomGradleSettingsTemplate: 0
+ useCustomProguardFile: 0
+ AndroidTargetArchitectures: 2
+ AndroidSplashScreenScale: 0
+ androidSplashScreen: {fileID: 0}
+ AndroidKeystoreName:
+ AndroidKeyaliasName:
+ AndroidEnableArmv9SecurityFeatures: 0
+ AndroidEnableArm64MTE: 0
+ AndroidBuildApkPerCpuArchitecture: 0
+ AndroidTVCompatibility: 0
+ AndroidIsGame: 1
+ AndroidEnableTango: 0
+ androidEnableBanner: 1
+ androidUseLowAccuracyLocation: 0
+ androidUseCustomKeystore: 0
+ m_AndroidBanners:
+ - width: 320
+ height: 180
+ banner: {fileID: 0}
+ androidGamepadSupportLevel: 0
+ AndroidMinifyRelease: 0
+ AndroidMinifyDebug: 0
+ AndroidValidateAppBundleSize: 1
+ AndroidAppBundleSizeToValidate: 200
+ AndroidReportGooglePlayAppDependencies: 1
+ androidSymbolsSizeThreshold: 800
+ m_BuildTargetIcons: []
+ m_BuildTargetPlatformIcons: []
+ m_BuildTargetBatching: []
+ m_BuildTargetShaderSettings: []
+ m_BuildTargetGraphicsJobs: []
+ m_BuildTargetGraphicsJobMode: []
+ m_BuildTargetGraphicsAPIs: []
+ m_BuildTargetVRSettings: []
+ m_DefaultShaderChunkSizeInMB: 16
+ m_DefaultShaderChunkCount: 0
+ openGLRequireES31: 0
+ openGLRequireES31AEP: 0
+ openGLRequireES32: 0
+ m_TemplateCustomTags: {}
+ mobileMTRendering:
+ Android: 1
+ VisionOS: 1
+ iPhone: 1
+ tvOS: 1
+ m_BuildTargetGroupLightmapEncodingQuality: []
+ m_BuildTargetGroupLightmapSettings: []
+ m_BuildTargetGroupLoadStoreDebugModeSettings: []
+ m_BuildTargetNormalMapEncoding: []
+ m_BuildTargetDefaultTextureCompressionFormat: []
+ playModeTestRunnerEnabled: 0
+ runPlayModeTestAsEditModeTest: 0
+ actionOnDotNetUnhandledException: 1
+ enableInternalProfiler: 0
+ logObjCUncaughtExceptions: 1
+ enableCrashReportAPI: 0
+ cameraUsageDescription:
+ locationUsageDescription:
+ microphoneUsageDescription:
+ bluetoothUsageDescription:
+ macOSTargetOSVersion: 11.0
+ switchNMETAOverride:
+ switchNetLibKey:
+ switchSocketMemoryPoolSize: 6144
+ switchSocketAllocatorPoolSize: 128
+ switchSocketConcurrencyLimit: 14
+ switchScreenResolutionBehavior: 2
+ switchUseCPUProfiler: 0
+ switchEnableFileSystemTrace: 0
+ switchLTOSetting: 0
+ switchApplicationID: 0x01004b9000490000
+ switchNSODependencies:
+ switchCompilerFlags:
+ switchTitleNames_0:
+ switchTitleNames_1:
+ switchTitleNames_2:
+ switchTitleNames_3:
+ switchTitleNames_4:
+ switchTitleNames_5:
+ switchTitleNames_6:
+ switchTitleNames_7:
+ switchTitleNames_8:
+ switchTitleNames_9:
+ switchTitleNames_10:
+ switchTitleNames_11:
+ switchTitleNames_12:
+ switchTitleNames_13:
+ switchTitleNames_14:
+ switchTitleNames_15:
+ switchPublisherNames_0:
+ switchPublisherNames_1:
+ switchPublisherNames_2:
+ switchPublisherNames_3:
+ switchPublisherNames_4:
+ switchPublisherNames_5:
+ switchPublisherNames_6:
+ switchPublisherNames_7:
+ switchPublisherNames_8:
+ switchPublisherNames_9:
+ switchPublisherNames_10:
+ switchPublisherNames_11:
+ switchPublisherNames_12:
+ switchPublisherNames_13:
+ switchPublisherNames_14:
+ switchPublisherNames_15:
+ switchIcons_0: {fileID: 0}
+ switchIcons_1: {fileID: 0}
+ switchIcons_2: {fileID: 0}
+ switchIcons_3: {fileID: 0}
+ switchIcons_4: {fileID: 0}
+ switchIcons_5: {fileID: 0}
+ switchIcons_6: {fileID: 0}
+ switchIcons_7: {fileID: 0}
+ switchIcons_8: {fileID: 0}
+ switchIcons_9: {fileID: 0}
+ switchIcons_10: {fileID: 0}
+ switchIcons_11: {fileID: 0}
+ switchIcons_12: {fileID: 0}
+ switchIcons_13: {fileID: 0}
+ switchIcons_14: {fileID: 0}
+ switchIcons_15: {fileID: 0}
+ switchSmallIcons_0: {fileID: 0}
+ switchSmallIcons_1: {fileID: 0}
+ switchSmallIcons_2: {fileID: 0}
+ switchSmallIcons_3: {fileID: 0}
+ switchSmallIcons_4: {fileID: 0}
+ switchSmallIcons_5: {fileID: 0}
+ switchSmallIcons_6: {fileID: 0}
+ switchSmallIcons_7: {fileID: 0}
+ switchSmallIcons_8: {fileID: 0}
+ switchSmallIcons_9: {fileID: 0}
+ switchSmallIcons_10: {fileID: 0}
+ switchSmallIcons_11: {fileID: 0}
+ switchSmallIcons_12: {fileID: 0}
+ switchSmallIcons_13: {fileID: 0}
+ switchSmallIcons_14: {fileID: 0}
+ switchSmallIcons_15: {fileID: 0}
+ switchManualHTML:
+ switchAccessibleURLs:
+ switchLegalInformation:
+ switchMainThreadStackSize: 1048576
+ switchPresenceGroupId:
+ switchLogoHandling: 0
+ switchReleaseVersion: 0
+ switchDisplayVersion: 1.0.0
+ switchStartupUserAccount: 0
+ switchSupportedLanguagesMask: 0
+ switchLogoType: 0
+ switchApplicationErrorCodeCategory:
+ switchUserAccountSaveDataSize: 0
+ switchUserAccountSaveDataJournalSize: 0
+ switchApplicationAttribute: 0
+ switchCardSpecSize: -1
+ switchCardSpecClock: -1
+ switchRatingsMask: 0
+ switchRatingsInt_0: 0
+ switchRatingsInt_1: 0
+ switchRatingsInt_2: 0
+ switchRatingsInt_3: 0
+ switchRatingsInt_4: 0
+ switchRatingsInt_5: 0
+ switchRatingsInt_6: 0
+ switchRatingsInt_7: 0
+ switchRatingsInt_8: 0
+ switchRatingsInt_9: 0
+ switchRatingsInt_10: 0
+ switchRatingsInt_11: 0
+ switchRatingsInt_12: 0
+ switchLocalCommunicationIds_0:
+ switchLocalCommunicationIds_1:
+ switchLocalCommunicationIds_2:
+ switchLocalCommunicationIds_3:
+ switchLocalCommunicationIds_4:
+ switchLocalCommunicationIds_5:
+ switchLocalCommunicationIds_6:
+ switchLocalCommunicationIds_7:
+ switchParentalControl: 0
+ switchAllowsScreenshot: 1
+ switchAllowsVideoCapturing: 1
+ switchAllowsRuntimeAddOnContentInstall: 0
+ switchDataLossConfirmation: 0
+ switchUserAccountLockEnabled: 0
+ switchSystemResourceMemory: 16777216
+ switchSupportedNpadStyles: 22
+ switchNativeFsCacheSize: 32
+ switchIsHoldTypeHorizontal: 1
+ switchSupportedNpadCount: 8
+ switchEnableTouchScreen: 1
+ switchSocketConfigEnabled: 0
+ switchTcpInitialSendBufferSize: 32
+ switchTcpInitialReceiveBufferSize: 64
+ switchTcpAutoSendBufferSizeMax: 256
+ switchTcpAutoReceiveBufferSizeMax: 256
+ switchUdpSendBufferSize: 9
+ switchUdpReceiveBufferSize: 42
+ switchSocketBufferEfficiency: 4
+ switchSocketInitializeEnabled: 1
+ switchNetworkInterfaceManagerInitializeEnabled: 1
+ switchDisableHTCSPlayerConnection: 0
+ switchUseNewStyleFilepaths: 1
+ switchUseLegacyFmodPriorities: 0
+ switchUseMicroSleepForYield: 1
+ switchEnableRamDiskSupport: 0
+ switchMicroSleepForYieldTime: 25
+ switchRamDiskSpaceSize: 12
+ switchUpgradedPlayerSettingsToNMETA: 0
+ ps4NPAgeRating: 12
+ ps4NPTitleSecret:
+ ps4NPTrophyPackPath:
+ ps4ParentalLevel: 11
+ ps4ContentID: ED1633-NPXX51362_00-0000000000000000
+ ps4Category: 0
+ ps4MasterVersion: 01.00
+ ps4AppVersion: 01.00
+ ps4AppType: 0
+ ps4ParamSfxPath:
+ ps4VideoOutPixelFormat: 0
+ ps4VideoOutInitialWidth: 1920
+ ps4VideoOutBaseModeInitialWidth: 1920
+ ps4VideoOutReprojectionRate: 60
+ ps4PronunciationXMLPath:
+ ps4PronunciationSIGPath:
+ ps4BackgroundImagePath:
+ ps4StartupImagePath:
+ ps4StartupImagesFolder:
+ ps4IconImagesFolder:
+ ps4SaveDataImagePath:
+ ps4SdkOverride:
+ ps4BGMPath:
+ ps4ShareFilePath:
+ ps4ShareOverlayImagePath:
+ ps4PrivacyGuardImagePath:
+ ps4ExtraSceSysFile:
+ ps4NPtitleDatPath:
+ ps4RemotePlayKeyAssignment: -1
+ ps4RemotePlayKeyMappingDir:
+ ps4PlayTogetherPlayerCount: 0
+ ps4EnterButtonAssignment: 2
+ ps4ApplicationParam1: 0
+ ps4ApplicationParam2: 0
+ ps4ApplicationParam3: 0
+ ps4ApplicationParam4: 0
+ ps4DownloadDataSize: 0
+ ps4GarlicHeapSize: 2048
+ ps4ProGarlicHeapSize: 2560
+ playerPrefsMaxSize: 32768
+ ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
+ ps4pnSessions: 1
+ ps4pnPresence: 1
+ ps4pnFriends: 1
+ ps4pnGameCustomData: 1
+ playerPrefsSupport: 0
+ enableApplicationExit: 0
+ resetTempFolder: 1
+ restrictedAudioUsageRights: 0
+ ps4UseResolutionFallback: 0
+ ps4ReprojectionSupport: 0
+ ps4UseAudio3dBackend: 0
+ ps4UseLowGarlicFragmentationMode: 1
+ ps4SocialScreenEnabled: 0
+ ps4ScriptOptimizationLevel: 2
+ ps4Audio3dVirtualSpeakerCount: 14
+ ps4attribCpuUsage: 0
+ ps4PatchPkgPath:
+ ps4PatchLatestPkgPath:
+ ps4PatchChangeinfoPath:
+ ps4PatchDayOne: 0
+ ps4attribUserManagement: 0
+ ps4attribMoveSupport: 0
+ ps4attrib3DSupport: 0
+ ps4attribShareSupport: 0
+ ps4attribExclusiveVR: 0
+ ps4disableAutoHideSplash: 0
+ ps4videoRecordingFeaturesUsed: 0
+ ps4contentSearchFeaturesUsed: 0
+ ps4CompatibilityPS5: 0
+ ps4AllowPS5Detection: 0
+ ps4GPU800MHz: 1
+ ps4attribEyeToEyeDistanceSettingVR: 0
+ ps4IncludedModules: []
+ ps4attribVROutputEnabled: 0
+ monoEnv:
+ splashScreenBackgroundSourceLandscape: {fileID: 0}
+ splashScreenBackgroundSourcePortrait: {fileID: 0}
+ blurSplashScreenBackground: 1
+ spritePackerPolicy:
+ webGLMemorySize: 32
+ webGLExceptionSupport: 1
+ webGLNameFilesAsHashes: 0
+ webGLShowDiagnostics: 0
+ webGLDataCaching: 1
+ webGLDebugSymbols: 0
+ webGLEmscriptenArgs:
+ webGLModulesDirectory:
+ webGLTemplate: APPLICATION:Default
+ webGLAnalyzeBuildSize: 0
+ webGLUseEmbeddedResources: 0
+ webGLCompressionFormat: 1
+ webGLWasmArithmeticExceptions: 0
+ webGLLinkerTarget: 1
+ webGLThreadsSupport: 0
+ webGLDecompressionFallback: 0
+ webGLInitialMemorySize: 32
+ webGLMaximumMemorySize: 2048
+ webGLMemoryGrowthMode: 2
+ webGLMemoryLinearGrowthStep: 16
+ webGLMemoryGeometricGrowthStep: 0.2
+ webGLMemoryGeometricGrowthCap: 96
+ webGLEnableWebGPU: 0
+ webGLPowerPreference: 2
+ webGLWebAssemblyTable: 0
+ webGLWebAssemblyBigInt: 0
+ webGLCloseOnQuit: 0
+ webWasm2023: 0
+ scriptingDefineSymbols: {}
+ additionalCompilerArguments: {}
+ platformArchitecture: {}
+ scriptingBackend: {}
+ il2cppCompilerConfiguration: {}
+ il2cppCodeGeneration: {}
+ il2cppStacktraceInformation: {}
+ managedStrippingLevel: {}
+ incrementalIl2cppBuild: {}
+ suppressCommonWarnings: 1
+ allowUnsafeCode: 0
+ useDeterministicCompilation: 1
+ additionalIl2CppArgs:
+ scriptingRuntimeVersion: 1
+ gcIncremental: 1
+ gcWBarrierValidation: 0
+ apiCompatibilityLevelPerPlatform: {}
+ editorAssembliesCompatibilityLevel: 1
+ m_RenderingPath: 1
+ m_MobileRenderingPath: 1
+ metroPackageName: CharacterControllerMovingBodies
+ metroPackageVersion: 1.0.0.0
+ metroCertificatePath:
+ metroCertificatePassword:
+ metroCertificateSubject:
+ metroCertificateIssuer:
+ metroCertificateNotAfter: 0000000000000000
+ metroApplicationDescription: CharacterControllerMovingBodies
+ wsaImages: {}
+ metroTileShortName: CharacterControllerMovingBodies
+ metroTileShowName: 0
+ metroMediumTileShowName: 0
+ metroLargeTileShowName: 0
+ metroWideTileShowName: 0
+ metroSupportStreamingInstall: 0
+ metroLastRequiredScene: 0
+ metroDefaultTileSize: 1
+ metroTileForegroundText: 2
+ metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
+ metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
+ metroSplashScreenUseBackgroundColor: 0
+ syncCapabilities: 0
+ platformCapabilities: {}
+ metroTargetDeviceFamilies: {}
+ metroFTAName:
+ metroFTAFileTypes: []
+ metroProtocolName:
+ vcxProjDefaultLanguage:
+ XboxOneProductId:
+ XboxOneUpdateKey:
+ XboxOneSandboxId:
+ XboxOneContentId:
+ XboxOneTitleId:
+ XboxOneSCId:
+ XboxOneGameOsOverridePath:
+ XboxOnePackagingOverridePath:
+ XboxOneAppManifestOverridePath:
+ XboxOneVersion: 1.0.0.0
+ XboxOnePackageEncryption: 0
+ XboxOnePackageUpdateGranularity: 2
+ XboxOneDescription:
+ XboxOneLanguage:
+ - enus
+ XboxOneCapability: []
+ XboxOneGameRating: {}
+ XboxOneIsContentPackage: 0
+ XboxOneEnhancedXboxCompatibilityMode: 0
+ XboxOneEnableGPUVariability: 1
+ XboxOneSockets: {}
+ XboxOneSplashScreen: {fileID: 0}
+ XboxOneAllowedProductIds: []
+ XboxOnePersistentLocalStorageSize: 0
+ XboxOneXTitleMemory: 8
+ XboxOneOverrideIdentityName:
+ XboxOneOverrideIdentityPublisher:
+ vrEditorSettings: {}
+ cloudServicesEnabled: {}
+ luminIcon:
+ m_Name:
+ m_ModelFolderPath:
+ m_PortalFolderPath:
+ luminCert:
+ m_CertPath:
+ m_SignPackage: 1
+ luminIsChannelApp: 0
+ luminVersion:
+ m_VersionCode: 1
+ m_VersionName:
+ hmiPlayerDataPath:
+ hmiForceSRGBBlit: 0
+ embeddedLinuxEnableGamepadInput: 0
+ hmiCpuConfiguration:
+ hmiLogStartupTiming: 0
+ qnxGraphicConfPath:
+ apiCompatibilityLevel: 6
+ captureStartupLogs: {}
+ activeInputHandler: 0
+ windowsGamepadBackendHint: 0
+ cloudProjectId:
+ framebufferDepthMemorylessMode: 0
+ qualitySettingsNames: []
+ projectName:
+ organizationId:
+ cloudEnabled: 0
+ legacyClampBlendShapeWeights: 0
+ hmiLoadingImage: {fileID: 0}
+ platformRequiresReadableAssets: 0
+ virtualTexturingSupportEnabled: 0
+ insecureHttpOption: 0
+ androidVulkanDenyFilterList: []
+ androidVulkanAllowFilterList: []
diff --git a/Examples/CharacterControllerMovingBodies/Readme.md b/Examples/CharacterControllerMovingBodies/Readme.md
new file mode 100644
index 0000000000..2403b27a35
--- /dev/null
+++ b/Examples/CharacterControllerMovingBodies/Readme.md
@@ -0,0 +1,27 @@
+# Netcode for GameObjects Smooth Transform Space Transitions
+## Non-Rigidbody CharacterController Parenting with Moving Bodies
+
+This example provides you with the fundamental building blocks for smooth synchronized transitions between two non-rigidbody based objects. This includes transitioning from world to local, local to world, and local to local transform spaces.
+
+### The `CharacterController`
+
+The `CharacterController` component is assigned to the `PlayerNoRigidbody` player prefab. It includes a `MoverScriptNoRigidbody` that handles all of the player's motion and includes some additional "non-rigidbody to non-rigidbody" collision handling logic that is applied when a player bumps into a rotation and/or moving body. The player prefab includes a child "PlayerBallPrime" that rotates around the player in local space (nested `NetworkTransform`), and the "PlayerBallPrime" has 3 children ("PlayerBallChild1-3") that each rotates around a different axis of the "PlayerBallPrime". While the end resulting effect is kind of cool looking, they provide a point of reference as to whether there is any deviation of each child's given axial path relative to each parent level. Additionally, it shows how tick synchronized nested `NetworkTransform` components keep synchronized with their parent and how that persists when the parent is parented or has its parent removed.
+
+### Rotating Bodies
+#### StationaryBodyA&B
+The stationary bodies are representative of changing the parenting of a `NetworkObject` between two `NetworkObject` instances while remaining in local space, interpolating, and smoothly transitioning between the two parents.
+
+
+#### RotatingBody
+The RotatingBody are just provide an example of a rotating non-Rigidbody object and one way to handle a rotation based collision. This also tests world to local and local to world transform space updates.
+
+
+#### MovingRotatingBody & ElevatorBody
+Both of these bodies use a simple path to follow.
+The MovingRotatingBody moves between two points on the world Z-axis and rotates while moving. The ElevatorBody moves between 4 points (forming a rectangular path) to show motion on more than one axis.
+
+
+
+### Example Limitations
+This example is primarily to provide a starting point for anyone interested in exploring a non-Rigidbody motion based project and is not to be considered a full working solution but more of a place to start. As an example. you might notice there is no consideration of Y-axis motion when on the elevator so it impacts the `MoverScriptNoRigidbody` jumping. This could be extended to take into consideration the bodies within the `RotatingBodyLogic` script that would increase the upward velocity amount when on a moving body that does move in the Y Axis. This could be further extended by adding a `MonoBehaviour` component to the path points that define its direction of movement or by a normalized direction vector between points to determine the movement of the body. These kind of details are left up to you to determine what style best fits your project.
+
diff --git a/Examples/OverridingScenesAndPrefabs/.gitignore b/Examples/OverridingScenesAndPrefabs/.gitignore
new file mode 100644
index 0000000000..2800399634
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/.gitignore
@@ -0,0 +1,83 @@
+# This .gitignore file should be placed at the root of your Unity project directory
+#
+# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
+#
+/[Ll]ibrary/
+/[Tt]emp/
+/[Oo]bj/
+/[Bb]uild/
+/[Bb]uilds/
+/[Ll]ogs/
+/[Uu]ser[Ss]ettings/
+
+# MemoryCaptures can get excessive in size.
+# They also could contain extremely sensitive data
+/[Mm]emoryCaptures/
+
+# Asset meta data should only be ignored when the corresponding asset is also ignored
+!/[Aa]ssets/**/*.meta
+
+# Uncomment this line if you wish to ignore the asset store tools plugin
+# /[Aa]ssets/AssetStoreTools*
+
+# Autogenerated Jetbrains Rider plugin
+/[Aa]ssets/Plugins/Editor/JetBrains*
+
+# Visual Studio cache directory
+.vs/
+
+# Gradle cache directory
+.gradle/
+
+# Autogenerated VS/MD/Consulo solution and project files
+ExportedObj/
+.consulo/
+*.csproj
+*.unityproj
+*.sln
+*.suo
+*.tmp
+*.user
+*.userprefs
+*.pidb
+*.booproj
+*.svd
+*.pdb
+*.mdb
+*.opendb
+*.VC.db
+
+# Unity3D generated meta files
+*.pidb.meta
+*.pdb.meta
+*.mdb.meta
+
+# Unity3D generated file on crash reports
+sysinfo.txt
+
+# Builds
+*.apk
+*.aab
+*.unitypackage
+
+# Crashlytics generated file
+crashlytics-build.properties
+
+# Packed Addressables
+/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
+
+# Temporary auto-generated Android Assets
+/[Aa]ssets/[Ss]treamingAssets/aa.meta
+/[Aa]ssets/[Ss]treamingAssets/aa/*
+/[Aa]ssets/[Ss]treamingAssets/BuildInfo.json
+/[Aa]ssets/[Ss]treamingAssets/BuildInfo.json.meta
+
+# Secrets
+*.pem
+*.pem.meta
+
+InitTestScene*
+
+boot.config
+SceneTemplateSettings.json
+*BurstAotSettings*.json
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/DefaultNetworkPrefabs.asset b/Examples/OverridingScenesAndPrefabs/Assets/DefaultNetworkPrefabs.asset
new file mode 100644
index 0000000000..56426e31b7
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/DefaultNetworkPrefabs.asset
@@ -0,0 +1,46 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e651dbb3fbac04af2b8f5abf007ddc23, type: 3}
+ m_Name: DefaultNetworkPrefabs
+ m_EditorClassIdentifier:
+ IsDefault: 1
+ List:
+ - Override: 0
+ Prefab: {fileID: 8921789205124766477, guid: a279f80620d4e6a4ab02c1a9c96ff460, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 8921789205124766477, guid: 8ae02ac62e2067144b8ff06d48aeb47a, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 3439633038736912633, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 4710599683293591777, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 6472733969592893139, guid: 3e5167b6e6bcb5645abb2dbc0078091e, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/DefaultNetworkPrefabs.asset.meta b/Examples/OverridingScenesAndPrefabs/Assets/DefaultNetworkPrefabs.asset.meta
new file mode 100644
index 0000000000..fee27b3ade
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/DefaultNetworkPrefabs.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: aa82390bfdde2564f828b8e5be375282
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials.meta
new file mode 100644
index 0000000000..463de70d61
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d5b7ad71451c27e4291295cfffc10328
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocal.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocal.mat
new file mode 100644
index 0000000000..b6fd2dd9a1
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocal.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildLocal
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.8980392, g: 0.039215658, b: 0.7682729, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocal.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocal.mat.meta
new file mode 100644
index 0000000000..35e4d565be
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocal.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 45fc555bc05bfee4ab8b0d536799ecee
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocalNoParentSync.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocalNoParentSync.mat
new file mode 100644
index 0000000000..c44172e7a7
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocalNoParentSync.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildLocalNoParentSync
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.039215658, g: 0.78592235, b: 0.8980392, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocalNoParentSync.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocalNoParentSync.mat.meta
new file mode 100644
index 0000000000..3a26e43d98
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildLocalNoParentSync.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: affef70511a06dd46b8f52636020af4a
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorld.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorld.mat
new file mode 100644
index 0000000000..0c2bf4b187
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorld.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildWorld
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.3783494, g: 0.039215658, b: 0.8980392, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorld.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorld.mat.meta
new file mode 100644
index 0000000000..9a00ded8c6
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorld.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 15d0bda12a233964086aee5c0c357e24
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorldNoParentSync.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorldNoParentSync.mat
new file mode 100644
index 0000000000..86b27eb5c9
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorldNoParentSync.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildWorldNoParentSync
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.039215658, g: 0.8980392, b: 0.09095798, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorldNoParentSync.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorldNoParentSync.mat.meta
new file mode 100644
index 0000000000..5ab7ff2e72
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ChildWorldNoParentSync.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a5e199307b2e0894294d9c8bee99a691
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/Direction.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/Direction.mat
new file mode 100644
index 0000000000..ed5ed117c3
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/Direction.mat
@@ -0,0 +1,84 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Direction
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 0.8962264, g: 0.52830994, b: 0.038047332, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/Direction.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/Direction.mat.meta
new file mode 100644
index 0000000000..c93791fac0
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/Direction.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5324c76c2bab7344badd5ea27a40bcb5
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridBlue.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridBlue.mat
new file mode 100644
index 0000000000..9009817e26
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridBlue.mat
@@ -0,0 +1,138 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-2624353793879203111
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GridBlue
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _EMISSION
+ - _GLOSSYREFLECTIONS_OFF
+ - _NORMALMAP
+ m_InvalidKeywords: []
+ m_LightmapFlags: 2
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: b94463ba36040ec4082132c54dd1bbad, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 2800000, guid: 8bf2cf149563066489e749ea032dbca7, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: e71f43865e91e6b418bd0d67be2445dc, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AlphaClip: 0
+ - _AlphaToMask: 0
+ - _Blend: 0
+ - _BlendModePreserveSpecular: 1
+ - _BumpScale: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _DstBlendAlpha: 0
+ - _EnvironmentReflections: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0.477
+ - _GlossyReflections: 0
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 0
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _SrcBlendAlpha: 1
+ - _Surface: 0
+ - _UVSec: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _Color: {r: 0.5438323, g: 0.88474977, b: 0.9528302, a: 1}
+ - _EmissionColor: {r: 0, g: 0.6988592, b: 1, a: 1}
+ - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridBlue.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridBlue.mat.meta
new file mode 100644
index 0000000000..b8caf3cbac
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridBlue.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1448a5da57523ce4bbc377143e02fe3c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridOrange.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridOrange.mat
new file mode 100644
index 0000000000..38a4e9808b
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridOrange.mat
@@ -0,0 +1,138 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-2624353793879203111
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GridOrange
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _EMISSION
+ - _GLOSSYREFLECTIONS_OFF
+ - _NORMALMAP
+ m_InvalidKeywords: []
+ m_LightmapFlags: 2
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: b94463ba36040ec4082132c54dd1bbad, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 2800000, guid: 8bf2cf149563066489e749ea032dbca7, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: e71f43865e91e6b418bd0d67be2445dc, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AlphaClip: 0
+ - _AlphaToMask: 0
+ - _Blend: 0
+ - _BlendModePreserveSpecular: 1
+ - _BumpScale: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _DstBlendAlpha: 0
+ - _EnvironmentReflections: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0.477
+ - _GlossyReflections: 0
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 0
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _SrcBlendAlpha: 1
+ - _Surface: 0
+ - _UVSec: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _Color: {r: 1, g: 0.49475378, b: 0, a: 1}
+ - _EmissionColor: {r: 0.990566, g: 0.48359674, b: 0.378471, a: 1}
+ - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridOrange.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridOrange.mat.meta
new file mode 100644
index 0000000000..bf2873069e
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridOrange.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2e2c886f4af8e304eb9a1e2e50d023b3
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridPattern.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridPattern.mat
new file mode 100644
index 0000000000..f44981f387
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridPattern.mat
@@ -0,0 +1,85 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GridPattern
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _GLOSSYREFLECTIONS_OFF
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 1
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 6, y: 6}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: a092c5fa8c60ed04aa1d72555f1740bc, type: 3}
+ m_Scale: {x: 6, y: 6}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 0
+ - _Metallic: 0.785
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0.254717, g: 0.23188858, b: 0.23188858, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridPattern.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridPattern.mat.meta
new file mode 100644
index 0000000000..cbca0f4485
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridPattern.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 42c4a0ad1f9d67a45b12f68697321aad
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridWhite.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridWhite.mat
new file mode 100644
index 0000000000..6e1b52a2c0
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridWhite.mat
@@ -0,0 +1,138 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-2624353793879203111
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GridWhite
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _EMISSION
+ - _GLOSSYREFLECTIONS_OFF
+ - _NORMALMAP
+ m_InvalidKeywords: []
+ m_LightmapFlags: 2
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BaseMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 2800000, guid: b94463ba36040ec4082132c54dd1bbad, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 2800000, guid: 8bf2cf149563066489e749ea032dbca7, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0.03}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: 844faea9c35b2464c8ecb09f66e2e2f8, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0.03}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AlphaClip: 0
+ - _AlphaToMask: 0
+ - _Blend: 0
+ - _BlendModePreserveSpecular: 1
+ - _BumpScale: 1
+ - _ClearCoatMask: 0
+ - _ClearCoatSmoothness: 0
+ - _Cull: 2
+ - _Cutoff: 0.5
+ - _DetailAlbedoMapScale: 1
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _DstBlendAlpha: 0
+ - _EnvironmentReflections: 1
+ - _GlossMapScale: 0.24
+ - _Glossiness: 0.846
+ - _GlossyReflections: 0
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 0
+ - _Parallax: 0.02
+ - _QueueOffset: 0
+ - _ReceiveShadows: 1
+ - _Smoothness: 0.5
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _SrcBlendAlpha: 1
+ - _Surface: 0
+ - _UVSec: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridWhite.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridWhite.mat.meta
new file mode 100644
index 0000000000..4559482bba
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/GridWhite.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a53ba8919fa78c14caac473c7e7ce7d3
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/Ground.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/Ground.mat
new file mode 100644
index 0000000000..252ea1a0ed
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/Ground.mat
@@ -0,0 +1,79 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Ground
+ m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 0.14769986, g: 0.1509434, b: 0.1473834, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/Ground.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/Ground.mat.meta
new file mode 100644
index 0000000000..6dbcac16d3
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/Ground.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9c73b921ea39f4344a19c2d1c7d6b314
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/PlayerMaterial.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/PlayerMaterial.mat
new file mode 100644
index 0000000000..bc67e92539
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/PlayerMaterial.mat
@@ -0,0 +1,84 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: PlayerMaterial
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/PlayerMaterial.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/PlayerMaterial.mat.meta
new file mode 100644
index 0000000000..1ceca58536
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/PlayerMaterial.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44e292334941fe148b997ca2b01b5789
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ShaderGraphGrid_01_Mat.mat b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ShaderGraphGrid_01_Mat.mat
new file mode 100644
index 0000000000..5161ac9b8e
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ShaderGraphGrid_01_Mat.mat
@@ -0,0 +1,134 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ShaderGraphGrid_01_Mat
+ m_Shader: {fileID: -6465566751694194690, guid: b8d7679189d4a5940af46004f3870920, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - Texture2D_C5E3E723:
+ m_Texture: {fileID: 2800000, guid: d4d6919451fe3e24388816386a6d15a4, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Grid_Normal_Map:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: d9c0dd5cdac07b145be73329e489869a, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0.004, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - Boolean_35A71344: 0
+ - Boolean_7A5F3F39: 1
+ - Boolean_7AC8D832: 1
+ - Vector1_3402D67A: 1
+ - Vector1_3655428E: 5
+ - Vector1_5B05FA1F: 0.062
+ - Vector1_6B67A8FF: -20
+ - Vector1_7810F718: 1
+ - Vector1_B6126E6E: 0.335
+ - Vector1_CA7D5F3: 30
+ - Vector1_D5FBE925: 0.3
+ - Vector1_F2A922B4: 1.73
+ - Vector1_F5FD9210: 33.9
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.119
+ - _GlossyReflections: 1
+ - _Grid_Normal_Strength: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 0
+ - _Parallax: 0.02
+ - _QueueControl: 0
+ - _QueueOffset: 0
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - Color_2B671050: {r: 0.23202202, g: 0.6245157, b: 0.745283, a: 0}
+ - Color_30A0CA2F: {r: 0.02745098, g: 1, b: 0.7565653, a: 0}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
+--- !u!114 &6450197988115792188
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 7
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Materials/ShaderGraphGrid_01_Mat.mat.meta b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ShaderGraphGrid_01_Mat.mat.meta
new file mode 100644
index 0000000000..efd03db61f
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Materials/ShaderGraphGrid_01_Mat.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7be68f3cac640fd40a7663ac97380a9c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Models.meta b/Examples/OverridingScenesAndPrefabs/Assets/Models.meta
new file mode 100644
index 0000000000..21910d8d7a
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Models.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bd50c879f39d9d94b92706513b4f56ef
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_100x100x200_Mesh.fbx b/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_100x100x200_Mesh.fbx
new file mode 100644
index 0000000000..2fa479b052
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_100x100x200_Mesh.fbx differ
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_100x100x200_Mesh.fbx.meta b/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_100x100x200_Mesh.fbx.meta
new file mode 100644
index 0000000000..2ebb0bb69b
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_100x100x200_Mesh.fbx.meta
@@ -0,0 +1,107 @@
+fileFormatVersion: 2
+guid: 4c31b0c9eb3dcdf4890cd904bf277cdf
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_Mesh.fbx b/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_Mesh.fbx
new file mode 100644
index 0000000000..ac24ee24d6
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_Mesh.fbx differ
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_Mesh.fbx.meta b/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_Mesh.fbx.meta
new file mode 100644
index 0000000000..f9aabd0c03
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Models/Ramp_Mesh.fbx.meta
@@ -0,0 +1,107 @@
+fileFormatVersion: 2
+guid: 5d8449220d5795b448a4cee5cbde4b56
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Models/Tunnel_Mesh.fbx b/Examples/OverridingScenesAndPrefabs/Assets/Models/Tunnel_Mesh.fbx
new file mode 100644
index 0000000000..7ec9d4bb74
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Assets/Models/Tunnel_Mesh.fbx differ
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Models/Tunnel_Mesh.fbx.meta b/Examples/OverridingScenesAndPrefabs/Assets/Models/Tunnel_Mesh.fbx.meta
new file mode 100644
index 0000000000..75c9997470
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Models/Tunnel_Mesh.fbx.meta
@@ -0,0 +1,107 @@
+fileFormatVersion: 2
+guid: 63fcabcd345d556498e09f748683088e
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Models/Wall_Mesh.fbx b/Examples/OverridingScenesAndPrefabs/Assets/Models/Wall_Mesh.fbx
new file mode 100644
index 0000000000..0bfc7f6493
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Assets/Models/Wall_Mesh.fbx differ
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Models/Wall_Mesh.fbx.meta b/Examples/OverridingScenesAndPrefabs/Assets/Models/Wall_Mesh.fbx.meta
new file mode 100644
index 0000000000..15452589e0
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Models/Wall_Mesh.fbx.meta
@@ -0,0 +1,107 @@
+fileFormatVersion: 2
+guid: 34560503bf9d61046b252db98a8cf770
+ModelImporter:
+ serializedVersion: 22200
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 0
+ motionNodeName:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importPhysicalCameras: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ strictVertexDataChecks: 0
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ importBlendShapeDeformPercent: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs.meta
new file mode 100644
index 0000000000..c867cd3a70
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4b97118ef11ec3347bc72b8d681e094b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ClientPlayer.prefab b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ClientPlayer.prefab
new file mode 100644
index 0000000000..78723f0b08
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ClientPlayer.prefab
@@ -0,0 +1,468 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1001 &1768978093373392434
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 4710599683293591777, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_Name
+ value: ClientPlayer
+ objectReference: {fileID: 0}
+ - target: {fileID: 5488962521685982563, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 3304021165
+ objectReference: {fileID: 0}
+ - target: {fileID: 6582615468703263770, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 3304021165
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7209693128479548322, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents:
+ - targetCorrespondingSourceObject: {fileID: 4710599683293591777, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 916832828106534790}
+ - targetCorrespondingSourceObject: {fileID: 4710599683293591777, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 4315296084954952915}
+ - targetCorrespondingSourceObject: {fileID: 4710599683293591777, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: -1
+ addedObject: {fileID: 8226639525103180092}
+ - targetCorrespondingSourceObject: {fileID: 3385537716926926172, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 1
+ addedObject: {fileID: 1499413778802221178}
+ - targetCorrespondingSourceObject: {fileID: 3385537716926926172, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 2
+ addedObject: {fileID: 3977729948622378772}
+ - targetCorrespondingSourceObject: {fileID: 9153294333356437960, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 1
+ addedObject: {fileID: 1444122194983607567}
+ - targetCorrespondingSourceObject: {fileID: 9153294333356437960, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 2
+ addedObject: {fileID: 2160506865115608745}
+ - targetCorrespondingSourceObject: {fileID: 324680519892629439, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 1
+ addedObject: {fileID: 204575060996785653}
+ - targetCorrespondingSourceObject: {fileID: 324680519892629439, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 2
+ addedObject: {fileID: 544477718306327008}
+ - targetCorrespondingSourceObject: {fileID: 1574061277261592297, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 1
+ addedObject: {fileID: 8023734133310089212}
+ - targetCorrespondingSourceObject: {fileID: 1574061277261592297, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 2
+ addedObject: {fileID: 5358980426924378504}
+ - targetCorrespondingSourceObject: {fileID: 7170742296219383225, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 1
+ addedObject: {fileID: 8116266233139283823}
+ - targetCorrespondingSourceObject: {fileID: 7170742296219383225, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ insertIndex: 2
+ addedObject: {fileID: 6061467578651748175}
+ m_SourcePrefab: {fileID: 100100000, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+--- !u!1 &960564489074766043 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 1574061277261592297, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ m_PrefabInstance: {fileID: 1768978093373392434}
+ m_PrefabAsset: {fileID: 0}
+--- !u!33 &8023734133310089212
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 960564489074766043}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &5358980426924378504
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 960564489074766043}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a53ba8919fa78c14caac473c7e7ce7d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &2021503815370961293 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 324680519892629439, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ m_PrefabInstance: {fileID: 1768978093373392434}
+ m_PrefabAsset: {fileID: 0}
+--- !u!33 &204575060996785653
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2021503815370961293}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &544477718306327008
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2021503815370961293}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a53ba8919fa78c14caac473c7e7ce7d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &3924733872325380974 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 3385537716926926172, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ m_PrefabInstance: {fileID: 1768978093373392434}
+ m_PrefabAsset: {fileID: 0}
+--- !u!33 &1499413778802221178
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3924733872325380974}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &3977729948622378772
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3924733872325380974}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5324c76c2bab7344badd5ea27a40bcb5, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &6472733969592893139 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 4710599683293591777, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ m_PrefabInstance: {fileID: 1768978093373392434}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &916832828106534790
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6472733969592893139}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: bb9a9987a689bbe43a05463cf3713b22, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ServerOnly: 0
+ UniqueLocalInstanceContent: ' Local content specific to ClientPlayer'
+--- !u!33 &4315296084954952915
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6472733969592893139}
+ m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &8226639525103180092
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6472733969592893139}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a53ba8919fa78c14caac473c7e7ce7d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &7461238108046391290 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 9153294333356437960, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ m_PrefabInstance: {fileID: 1768978093373392434}
+ m_PrefabAsset: {fileID: 0}
+--- !u!33 &1444122194983607567
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7461238108046391290}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &2160506865115608745
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7461238108046391290}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a53ba8919fa78c14caac473c7e7ce7d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &8867363453312856971 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 7170742296219383225, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ m_PrefabInstance: {fileID: 1768978093373392434}
+ m_PrefabAsset: {fileID: 0}
+--- !u!33 &8116266233139283823
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8867363453312856971}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &6061467578651748175
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8867363453312856971}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a53ba8919fa78c14caac473c7e7ce7d3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ClientPlayer.prefab.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ClientPlayer.prefab.meta
new file mode 100644
index 0000000000..75b0f6a314
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ClientPlayer.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3e5167b6e6bcb5645abb2dbc0078091e
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Floor.physicMaterial b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Floor.physicMaterial
new file mode 100644
index 0000000000..5aeefdde15
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Floor.physicMaterial
@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!134 &13400000
+PhysicsMaterial:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Floor
+ serializedVersion: 2
+ m_DynamicFriction: 2.5
+ m_StaticFriction: 2
+ m_Bounciness: 0
+ m_FrictionCombine: 3
+ m_BounceCombine: 2
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Floor.physicMaterial.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Floor.physicMaterial.meta
new file mode 100644
index 0000000000..a55550d94a
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Floor.physicMaterial.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2c574f6ade946d94f9ec0183e3bc4579
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 13400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Ramp_Prefab.prefab b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Ramp_Prefab.prefab
new file mode 100644
index 0000000000..edcdf3071c
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Ramp_Prefab.prefab
@@ -0,0 +1,111 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &8924170145835402666
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8111781018561290000}
+ - component: {fileID: 5133274882688487605}
+ - component: {fileID: 6978882906433643647}
+ - component: {fileID: 894093325933845257}
+ m_Layer: 0
+ m_Name: Ramp_Prefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &8111781018561290000
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8924170145835402666}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &5133274882688487605
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8924170145835402666}
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!23 &6978882906433643647
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8924170145835402666}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &894093325933845257
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8924170145835402666}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 5
+ m_Convex: 0
+ m_CookingOptions: 30
+ m_Mesh: {fileID: -8512782951310809723, guid: 426a2785f8a940049aac2c246661cf09, type: 3}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Ramp_Prefab.prefab.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Ramp_Prefab.prefab.meta
new file mode 100644
index 0000000000..14e8009f6b
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Ramp_Prefab.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 7ab2ae375810b5641a36d327b9f022cf
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.physicMaterial b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.physicMaterial
new file mode 100644
index 0000000000..f76e8e1f5a
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.physicMaterial
@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!134 &13400000
+PhysicsMaterial:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: RotatingBody
+ serializedVersion: 2
+ m_DynamicFriction: 2.5
+ m_StaticFriction: 2
+ m_Bounciness: 0
+ m_FrictionCombine: 3
+ m_BounceCombine: 2
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.physicMaterial.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.physicMaterial.meta
new file mode 100644
index 0000000000..4650ebf5b0
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.physicMaterial.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c16e8d98094923449892b28a230ddb9c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 13400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.prefab b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.prefab
new file mode 100644
index 0000000000..73c04c02fa
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.prefab
@@ -0,0 +1,1138 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &755183729697733696
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 522841341294848418}
+ - component: {fileID: 6376943934387906635}
+ - component: {fileID: 4793038284696412839}
+ m_Layer: 0
+ m_Name: WallPusherA_Inner
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &522841341294848418
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 755183729697733696}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 4.05, y: 2.27, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &6376943934387906635
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 755183729697733696}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2, y: 2.25, z: 6}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &4793038284696412839
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 755183729697733696}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2c40721ca0fd31645a742e5ad0e0cdc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ PushDirection: 1
+ ToCenterDirOrig: {x: 0, y: 0, z: 0}
+ ToCenterDirCalc: {x: 0, y: 0, z: 0}
+ ToCenterDirTrans: {x: 0, y: 0, z: 0}
+--- !u!1 &1070469363212057228
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4967607898511807569}
+ - component: {fileID: 4081511419635538304}
+ - component: {fileID: 3264090684553753291}
+ - component: {fileID: 2074962368930179783}
+ - component: {fileID: 2659845886479429441}
+ - component: {fileID: 365707591732078506}
+ m_Layer: 0
+ m_Name: Tunnel_Prefab (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &4967607898511807569
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
+ m_LocalPosition: {x: 0, y: 5, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
+--- !u!33 &4081511419635538304
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Mesh: {fileID: 5060444177187149915, guid: 63fcabcd345d556498e09f748683088e, type: 3}
+--- !u!23 &3264090684553753291
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &2074962368930179783
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Material: {fileID: 13400000, guid: c16e8d98094923449892b28a230ddb9c, type: 2}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2.502674, y: 6.0000024, z: 0.25225586}
+ m_Center: {x: 0, y: -5.4553292e-15, z: 2.3838842}
+--- !u!65 &2659845886479429441
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.19382703, y: 6.0000024, z: 2.2399507}
+ m_Center: {x: -1.1314733, y: -1.7786642e-15, z: 1.1251621}
+--- !u!65 &365707591732078506
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1070469363212057228}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.16720939, y: 6.0000024, z: 2.256102}
+ m_Center: {x: 1.1123942, y: -1.893427e-15, z: 1.1332378}
+--- !u!1 &1227036625448805321
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6179387521291227856}
+ - component: {fileID: 6043205804484853104}
+ - component: {fileID: 7583159525709273484}
+ - component: {fileID: 8095289646395249164}
+ m_Layer: 0
+ m_Name: Ramp_PrefabA
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &6179387521291227856
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1227036625448805321}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.25, z: 7.993}
+ m_LocalScale: {x: 8, y: 0.5, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 3394725634534525932}
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &6043205804484853104
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1227036625448805321}
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!23 &7583159525709273484
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1227036625448805321}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &8095289646395249164
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1227036625448805321}
+ m_Material: {fileID: 13400000, guid: c16e8d98094923449892b28a230ddb9c, type: 2}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 5
+ m_Convex: 1
+ m_CookingOptions: 30
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!1 &1451894099667441545
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3394725634534525932}
+ - component: {fileID: 2385627259374300527}
+ m_Layer: 0
+ m_Name: BridgeGap
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3394725634534525932
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1451894099667441545}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: 1, z: -0.000000021855694, w: 0}
+ m_LocalPosition: {x: 0, y: 0.14, z: -1.0100002}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 6179387521291227856}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!136 &2385627259374300527
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1451894099667441545}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.1
+ m_Height: 1.15
+ m_Direction: 0
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &2406660182425334495
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1877966211327071347}
+ - component: {fileID: 3334163744623252575}
+ - component: {fileID: 5776191766534439988}
+ - component: {fileID: 6535282611511474253}
+ - component: {fileID: 8963258823839906869}
+ - component: {fileID: 7304575238635320140}
+ m_Layer: 0
+ m_Name: Tunnel_Prefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &1877966211327071347
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
+ m_LocalPosition: {x: 0, y: 4.96, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0}
+--- !u!33 &3334163744623252575
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Mesh: {fileID: 5060444177187149915, guid: 63fcabcd345d556498e09f748683088e, type: 3}
+--- !u!23 &5776191766534439988
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &6535282611511474253
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2.502674, y: 6.0000024, z: 0.258326}
+ m_Center: {x: 0, y: 5.4121983e-15, z: 2.3808491}
+--- !u!65 &8963258823839906869
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2527809, y: 6.0000024, z: 2.2399507}
+ m_Center: {x: -1.1249466, y: 1.7786642e-15, z: 1.1251621}
+--- !u!65 &7304575238635320140
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2406660182425334495}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.26525307, y: 6.0000024, z: 2.256102}
+ m_Center: {x: 1.1187105, y: 1.893427e-15, z: 1.1332378}
+--- !u!1 &2492174073242389836
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6182591213277846585}
+ - component: {fileID: 3395949877673187758}
+ m_Layer: 0
+ m_Name: BridgeGap (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6182591213277846585
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2492174073242389836}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -1, z: 0.000000021855694, w: 0}
+ m_LocalPosition: {x: 0, y: 0.14, z: -1.01}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7826839884382864090}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!136 &3395949877673187758
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2492174073242389836}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.1
+ m_Height: 1.15
+ m_Direction: 0
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &3038314618705458857
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3570252208687936609}
+ - component: {fileID: 4156819582579138816}
+ - component: {fileID: 2806575150631930745}
+ m_Layer: 0
+ m_Name: WallPusherB_Inner
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &3570252208687936609
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3038314618705458857}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.07, y: 2.27, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &4156819582579138816
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3038314618705458857}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2, y: 2.25, z: 6}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &2806575150631930745
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3038314618705458857}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2c40721ca0fd31645a742e5ad0e0cdc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ PushDirection: 0
+ ToCenterDirOrig: {x: 0, y: 0, z: 0}
+ ToCenterDirCalc: {x: 0, y: 0, z: 0}
+ ToCenterDirTrans: {x: 0, y: 0, z: 0}
+--- !u!1 &4405129256840456534
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5628673131512617452}
+ - component: {fileID: 1065561891622964567}
+ - component: {fileID: 4468158207537748033}
+ m_Layer: 0
+ m_Name: WallPusherA_Outer
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &5628673131512617452
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4405129256840456534}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 4.89, y: 2.27, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &1065561891622964567
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4405129256840456534}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2, y: 2.25, z: 6}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &4468158207537748033
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4405129256840456534}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2c40721ca0fd31645a742e5ad0e0cdc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ PushDirection: 0
+ ToCenterDirOrig: {x: 0, y: 0, z: 0}
+ ToCenterDirCalc: {x: 0, y: 0, z: 0}
+ ToCenterDirTrans: {x: 0, y: 0, z: 0}
+--- !u!1 &5415449980466536476
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4291553105548296809}
+ - component: {fileID: 8134939553748259768}
+ - component: {fileID: 3307166493715739449}
+ - component: {fileID: 850162744905636139}
+ m_Layer: 0
+ m_Name: RotatingBody
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4291553105548296809
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5415449980466536476}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1877966211327071347}
+ - {fileID: 4967607898511807569}
+ - {fileID: 522841341294848418}
+ - {fileID: 5628673131512617452}
+ - {fileID: 3570252208687936609}
+ - {fileID: 5389614242607036533}
+ - {fileID: 6179387521291227856}
+ - {fileID: 7826839884382864090}
+ - {fileID: 2053800158975384476}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &8134939553748259768
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5415449980466536476}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 8.023605, y: 8.144613, z: 20.106205}
+ m_Center: {x: -0.03800702, y: 4.1726913, z: -0.02903366}
+--- !u!114 &3307166493715739449
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5415449980466536476}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ GlobalObjectIdHash: 1921503253
+ InScenePlacedSourceGlobalObjectIdHash: 0
+ DeferredDespawnTick: 0
+ Ownership: 2
+ AlwaysReplicateAsRoot: 0
+ SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 1
+ SpawnWithObservers: 1
+ DontDestroyWithOwner: 1
+ AutoObjectParentSync: 1
+ SyncOwnerTransformWhenParented: 1
+--- !u!114 &850162744905636139
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5415449980466536476}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 374ac199eb18f0f468bc018a722775c2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ AuthorityMode: 1
+ TickSyncChildren: 1
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.1
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.1
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 0
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 0
+ RotationSpeed: 0.25
+ RotateDirection: 0
+ ZAxisMove: 0
+--- !u!1 &5463907175177238004
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2053800158975384476}
+ - component: {fileID: 2688281628964240045}
+ m_Layer: 0
+ m_Name: Point Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2053800158975384476
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5463907175177238004}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 6.54, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!108 &2688281628964240045
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5463907175177238004}
+ m_Enabled: 1
+ serializedVersion: 11
+ m_Type: 2
+ m_Color: {r: 0.9622642, g: 0.9622642, b: 0.9622642, a: 1}
+ m_Intensity: 2
+ m_Range: 20
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 0
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ForceVisible: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+ m_LightUnit: 1
+ m_LuxAtDistance: 1
+ m_EnableSpotReflector: 1
+--- !u!1 &6529740436184164063
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7826839884382864090}
+ - component: {fileID: 2797882924116045225}
+ - component: {fileID: 1097787484049525257}
+ - component: {fileID: 570708159460268413}
+ m_Layer: 0
+ m_Name: Ramp_PrefabB
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &7826839884382864090
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6529740436184164063}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
+ m_LocalPosition: {x: 0, y: 0.25, z: -7.993}
+ m_LocalScale: {x: 8, y: 0.5, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 6182591213277846585}
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
+--- !u!33 &2797882924116045225
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6529740436184164063}
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!23 &1097787484049525257
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6529740436184164063}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!64 &570708159460268413
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6529740436184164063}
+ m_Material: {fileID: 13400000, guid: c16e8d98094923449892b28a230ddb9c, type: 2}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 5
+ m_Convex: 1
+ m_CookingOptions: 30
+ m_Mesh: {fileID: -6265776187016570482, guid: 4c31b0c9eb3dcdf4890cd904bf277cdf, type: 3}
+--- !u!1 &8002386465640125644
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5389614242607036533}
+ - component: {fileID: 4101224782146625552}
+ - component: {fileID: 6895917012766152111}
+ m_Layer: 0
+ m_Name: WallPusherB_Outer
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &5389614242607036533
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8002386465640125644}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.83, y: 2.27, z: 0}
+ m_LocalScale: {x: 4, y: 2, z: 2}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4291553105548296809}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &4101224782146625552
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8002386465640125644}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 1
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2, y: 2.25, z: 6}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &6895917012766152111
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8002386465640125644}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2c40721ca0fd31645a742e5ad0e0cdc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ PushDirection: 1
+ ToCenterDirOrig: {x: 0, y: 0, z: 0}
+ ToCenterDirCalc: {x: 0, y: 0, z: 0}
+ ToCenterDirTrans: {x: 0, y: 0, z: 0}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.prefab.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.prefab.meta
new file mode 100644
index 0000000000..d22d47036e
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/RotatingBody.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0123d7125346c274da00b38e950a266b
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/SceneLevelGeometry.prefab b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/SceneLevelGeometry.prefab
new file mode 100644
index 0000000000..f636c60a54
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/SceneLevelGeometry.prefab
@@ -0,0 +1,794 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &910007655143077103
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6283120762215196916}
+ - component: {fileID: 3739510624437302406}
+ m_Layer: 0
+ m_Name: CornerBumper (1)
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6283120762215196916
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 910007655143077103}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0.9244967, z: -0, w: -0.38119}
+ m_LocalPosition: {x: -29.72, y: 0.98, z: 29.82}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: -224.815, z: 0}
+--- !u!65 &3739510624437302406
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 910007655143077103}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 4, y: 2, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &1854705290947220173
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2290144462706082272}
+ - component: {fileID: 4559046433245738380}
+ m_Layer: 0
+ m_Name: CornerBumper (2)
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2290144462706082272
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1854705290947220173}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0.3771283, z: -0, w: -0.92616105}
+ m_LocalPosition: {x: -29.53, y: 0.98, z: -29.71}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: -315.688, z: 0}
+--- !u!65 &4559046433245738380
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1854705290947220173}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 4, y: 2, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &4012615691354089848
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615691354089844}
+ - component: {fileID: 4012615691354089845}
+ - component: {fileID: 4012615691354089850}
+ - component: {fileID: 4012615691354089851}
+ m_Layer: 0
+ m_Name: Floor
+ m_TagString: Floor
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615691354089844
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691354089848}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: -0.50000006, z: 0}
+ m_LocalScale: {x: 60, y: 1, z: 60}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615691354089845
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691354089848}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615691354089850
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691354089848}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 42c4a0ad1f9d67a45b12f68697321aad, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615691354089851
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691354089848}
+ m_Material: {fileID: 13400000, guid: 2c574f6ade946d94f9ec0183e3bc4579, type: 2}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &4012615691503252843
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615691503252839}
+ - component: {fileID: 4012615691503252836}
+ - component: {fileID: 4012615691503252837}
+ - component: {fileID: 4012615691503252842}
+ m_Layer: 0
+ m_Name: Side
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615691503252839
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691503252843}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -30.5, y: 0.49999994, z: 0}
+ m_LocalScale: {x: 1, y: 3, z: 62}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615691503252836
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691503252843}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615691503252837
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691503252843}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 9c73b921ea39f4344a19c2d1c7d6b314, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615691503252842
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691503252843}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2, y: 1, z: 1}
+ m_Center: {x: -0.5, y: 0, z: 0}
+--- !u!1 &4012615691965054905
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615691965054901}
+ - component: {fileID: 4012615691965054906}
+ - component: {fileID: 4012615691965054907}
+ - component: {fileID: 4012615691965054904}
+ m_Layer: 0
+ m_Name: Side
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615691965054901
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691965054905}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.49999994, z: 30.5}
+ m_LocalScale: {x: 60, y: 3, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615691965054906
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691965054905}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615691965054907
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691965054905}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 9c73b921ea39f4344a19c2d1c7d6b314, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615691965054904
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615691965054905}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 2}
+ m_Center: {x: 0, y: 0, z: 0.5}
+--- !u!1 &4012615692269653858
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615692269653854}
+ - component: {fileID: 4012615692269653855}
+ - component: {fileID: 4012615692269653852}
+ - component: {fileID: 4012615692269653853}
+ m_Layer: 0
+ m_Name: Side
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615692269653854
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692269653858}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.49999994, z: -30.5}
+ m_LocalScale: {x: 60, y: 3, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615692269653855
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692269653858}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615692269653852
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692269653858}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 9c73b921ea39f4344a19c2d1c7d6b314, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615692269653853
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692269653858}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 2}
+ m_Center: {x: 0, y: 0, z: -0.5}
+--- !u!1 &4012615692778511854
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615692778511849}
+ m_Layer: 0
+ m_Name: SceneLevelGeometry
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615692778511849
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692778511854}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.000000059604645, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 4012615691354089844}
+ - {fileID: 4012615691965054901}
+ - {fileID: 4012615692269653854}
+ - {fileID: 4012615691503252839}
+ - {fileID: 4012615692791378778}
+ - {fileID: 3910294717376836327}
+ - {fileID: 6283120762215196916}
+ - {fileID: 2290144462706082272}
+ - {fileID: 6959258897999621209}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4012615692791378782
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4012615692791378778}
+ - component: {fileID: 4012615692791378779}
+ - component: {fileID: 4012615692791378776}
+ - component: {fileID: 4012615692791378777}
+ m_Layer: 0
+ m_Name: Side
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4012615692791378778
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692791378782}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 30.5, y: 0.49999994, z: 0}
+ m_LocalScale: {x: 1, y: 3, z: 62}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4012615692791378779
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692791378782}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &4012615692791378776
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692791378782}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 9c73b921ea39f4344a19c2d1c7d6b314, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4012615692791378777
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4012615692791378782}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2, y: 1, z: 1}
+ m_Center: {x: 0.5, y: 0, z: 0}
+--- !u!1 &4674276234353933548
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3910294717376836327}
+ - component: {fileID: 3136259738973340924}
+ m_Layer: 0
+ m_Name: CornerBumper
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3910294717376836327
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4674276234353933548}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: -0.38268343, z: 0, w: 0.92387956}
+ m_LocalPosition: {x: 29.7, y: 0.98, z: -29.61}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: -45, z: 0}
+--- !u!65 &3136259738973340924
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4674276234353933548}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 4, y: 2, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &7080625901286762351
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6959258897999621209}
+ - component: {fileID: 7672408768716900064}
+ m_Layer: 0
+ m_Name: CornerBumper (3)
+ m_TagString: Boundary
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6959258897999621209
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7080625901286762351}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: 0.93588465, z: -0, w: -0.35230666}
+ m_LocalPosition: {x: 29.26, y: 0.98, z: 29.45}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 4012615692778511849}
+ m_LocalEulerAnglesHint: {x: 0, y: -498.74298, z: 0}
+--- !u!65 &7672408768716900064
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7080625901286762351}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 4, y: 2, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/SceneLevelGeometry.prefab.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/SceneLevelGeometry.prefab.meta
new file mode 100644
index 0000000000..154fd718e7
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/SceneLevelGeometry.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3ec484313a7a6754dac871e620df8db2
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ServerPlayer.prefab b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ServerPlayer.prefab
new file mode 100644
index 0000000000..8e6ca8383c
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ServerPlayer.prefab
@@ -0,0 +1,656 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &324680519892629439
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7909757205025274661}
+ - component: {fileID: 4497278534226153218}
+ m_Layer: 0
+ m_Name: PlayerBallChild1
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7909757205025274661
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 324680519892629439}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 1, y: 0, z: 0}
+ m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8978127728034846793}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &4497278534226153218
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 324680519892629439}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 792d7ce524eb358469373fe12babef88, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
+ NetworkTransformExpanded: 0
+ AuthorityMode: 1
+ TickSyncChildren: 0
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.001
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.01
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 1
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 1
+ ExpandPlayerBallMotion: 1
+ ExpandNetworkTransform: 1
+ RotationAxis: 2
+ RotationSpeed: 1.5
+--- !u!1 &1574061277261592297
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2851817463696415024}
+ - component: {fileID: 8353621747658706578}
+ m_Layer: 0
+ m_Name: PlayerBallChild2
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2851817463696415024
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1574061277261592297}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: -1, y: 0, z: 0}
+ m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8978127728034846793}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &8353621747658706578
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1574061277261592297}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 792d7ce524eb358469373fe12babef88, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
+ NetworkTransformExpanded: 0
+ AuthorityMode: 1
+ TickSyncChildren: 0
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.001
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.01
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 1
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 1
+ ExpandPlayerBallMotion: 0
+ ExpandNetworkTransform: 1
+ RotationAxis: 0
+ RotationSpeed: 1.5
+--- !u!1 &3152047010790481352
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2530875210329125868}
+ - component: {fileID: 7166766943079311595}
+ - component: {fileID: 2218667139823191844}
+ m_Layer: 0
+ m_Name: ParentedText
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2530875210329125868
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3152047010790481352}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1.91, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7209693128479548322}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!23 &7166766943079311595
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3152047010790481352}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!102 &2218667139823191844
+TextMesh:
+ serializedVersion: 3
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3152047010790481352}
+ m_Text: "Hello \nWorld"
+ m_OffsetZ: 0
+ m_CharacterSize: 0.15
+ m_LineSpacing: 1
+ m_Anchor: 4
+ m_Alignment: 1
+ m_TabSize: 4
+ m_FontSize: 20
+ m_FontStyle: 1
+ m_RichText: 1
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_Color:
+ serializedVersion: 2
+ rgba: 4294967295
+--- !u!1 &3385537716926926172
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6528377011520223688}
+ - component: {fileID: 7760305833775493645}
+ m_Layer: 0
+ m_Name: Direction
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6528377011520223688
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3385537716926926172}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0.529, z: 0.36}
+ m_LocalScale: {x: 0.5, y: 0.35, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 7209693128479548322}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &7760305833775493645
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3385537716926926172}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 0
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!1 &4710599683293591777
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7209693128479548322}
+ - component: {fileID: 2033351919148783259}
+ - component: {fileID: 1689822717476917681}
+ - component: {fileID: 6582615468703263770}
+ - component: {fileID: 996823777406759075}
+ - component: {fileID: 4107659158848356731}
+ - component: {fileID: 8869001495323625783}
+ - component: {fileID: 769922645502876198}
+ m_Layer: 0
+ m_Name: ServerPlayer
+ m_TagString: Player
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7209693128479548322
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4710599683293591777}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 6528377011520223688}
+ - {fileID: 2530875210329125868}
+ - {fileID: 8978127728034846793}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!136 &2033351919148783259
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4710599683293591777}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Height: 2
+ m_Direction: 1
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!143 &1689822717476917681
+CharacterController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4710599683293591777}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Height: 2
+ m_Radius: 0.5
+ m_SlopeLimit: 45
+ m_StepOffset: 0.3
+ m_SkinWidth: 0.08
+ m_MinMoveDistance: 0.001
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &6582615468703263770
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4710599683293591777}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ GlobalObjectIdHash: 2883015141
+ InScenePlacedSourceGlobalObjectIdHash: 2508530451
+ DeferredDespawnTick: 0
+ Ownership: 0
+ AlwaysReplicateAsRoot: 0
+ SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 1
+ SpawnWithObservers: 1
+ DontDestroyWithOwner: 0
+ AutoObjectParentSync: 1
+ SyncOwnerTransformWhenParented: 0
+ AllowOwnerToParent: 1
+--- !u!114 &996823777406759075
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4710599683293591777}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 8e5128237997be649af0cc87dd0eb563, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
+ ApplyColorToChildren: 1
+ IgnoreChildren:
+ - {fileID: 3385537716926926172}
+--- !u!114 &4107659158848356731
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4710599683293591777}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5ce25b0b3f15e6446a88a85787c2f94a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
+ NetworkTransformExpanded: 0
+ AuthorityMode: 1
+ TickSyncChildren: 1
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.01
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.1
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 0
+ SwitchTransformSpaceWhenParented: 1
+ Interpolate: 1
+ SlerpPosition: 0
+ MoverScriptNoRigidbodyExpanded: 0
+ SpawnRadius: 10
+ Increment: 1
+ RotationSpeed: 1.26
+ MovementSpeed: 15
+ JumpSpeed: 10
+ AirSpeedFactor: 0.35
+ Gravity: -9.8
+ ContinualChildMotion: 1
+--- !u!65 &8869001495323625783
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4710599683293591777}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 1, y: 1.4, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!114 &769922645502876198
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4710599683293591777}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: bb9a9987a689bbe43a05463cf3713b22, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ServerOnly: 1
+ UniqueLocalInstanceContent: ServerPlayer specific local content
+--- !u!1 &7170742296219383225
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5575000075487772256}
+ - component: {fileID: 974108613365902635}
+ m_Layer: 0
+ m_Name: PlayerBallChild3
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &5575000075487772256
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7170742296219383225}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 1}
+ m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 8978127728034846793}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &974108613365902635
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7170742296219383225}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 792d7ce524eb358469373fe12babef88, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
+ NetworkTransformExpanded: 0
+ AuthorityMode: 1
+ TickSyncChildren: 0
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.001
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.01
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 1
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 1
+ ExpandPlayerBallMotion: 1
+ ExpandNetworkTransform: 1
+ RotationAxis: 1
+ RotationSpeed: 1.5
+--- !u!1 &9153294333356437960
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8978127728034846793}
+ - component: {fileID: 9124254747570484083}
+ m_Layer: 0
+ m_Name: PlayerBallPrime
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &8978127728034846793
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9153294333356437960}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 1.25, y: 0, z: 0}
+ m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 7909757205025274661}
+ - {fileID: 2851817463696415024}
+ - {fileID: 5575000075487772256}
+ m_Father: {fileID: 7209693128479548322}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &9124254747570484083
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 9153294333356437960}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 792d7ce524eb358469373fe12babef88, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
+ NetworkTransformExpanded: 0
+ AuthorityMode: 1
+ TickSyncChildren: 0
+ UseUnreliableDeltas: 0
+ SyncPositionX: 1
+ SyncPositionY: 1
+ SyncPositionZ: 1
+ SyncRotAngleX: 1
+ SyncRotAngleY: 1
+ SyncRotAngleZ: 1
+ SyncScaleX: 1
+ SyncScaleY: 1
+ SyncScaleZ: 1
+ PositionThreshold: 0.001
+ RotAngleThreshold: 0.01
+ ScaleThreshold: 0.01
+ UseQuaternionSynchronization: 1
+ UseQuaternionCompression: 0
+ UseHalfFloatPrecision: 0
+ InLocalSpace: 1
+ SwitchTransformSpaceWhenParented: 0
+ Interpolate: 1
+ SlerpPosition: 1
+ ExpandPlayerBallMotion: 1
+ ExpandNetworkTransform: 1
+ RotationAxis: 0
+ RotationSpeed: 1.5
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ServerPlayer.prefab.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ServerPlayer.prefab.meta
new file mode 100644
index 0000000000..c28eb79b02
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/ServerPlayer.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 90bfa3cd2cce8f14ead59b4dbdae92bb
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Tunnel_Prefab.prefab b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Tunnel_Prefab.prefab
new file mode 100644
index 0000000000..c596d7333d
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Tunnel_Prefab.prefab
@@ -0,0 +1,154 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1604908963751126680
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2093637950428003362}
+ - component: {fileID: 3071950872142852999}
+ - component: {fileID: 956227959320364877}
+ - component: {fileID: 4985949235297978144}
+ - component: {fileID: 8456313914433245678}
+ - component: {fileID: 1138964657491743937}
+ m_Layer: 0
+ m_Name: Tunnel_Prefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &2093637950428003362
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: -90.00001, y: 0, z: 0}
+--- !u!33 &3071950872142852999
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Mesh: {fileID: 5060444177187149915, guid: 63fcabcd345d556498e09f748683088e, type: 3}
+--- !u!23 &956227959320364877
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &4985949235297978144
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 2.502674, y: 6.0000024, z: 0.258326}
+ m_Center: {x: 0, y: 5.4121983e-15, z: 2.3808491}
+--- !u!65 &8456313914433245678
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.2527809, y: 6.0000024, z: 2.2399507}
+ m_Center: {x: -1.1249466, y: 1.7786642e-15, z: 1.1251621}
+--- !u!65 &1138964657491743937
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1604908963751126680}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.26525307, y: 6.0000024, z: 2.256102}
+ m_Center: {x: 1.1187105, y: 1.893427e-15, z: 1.1332378}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Tunnel_Prefab.prefab.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Tunnel_Prefab.prefab.meta
new file mode 100644
index 0000000000..58def4a902
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Tunnel_Prefab.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4b50ff3d475fc3f4fa77ac6aa6e679f2
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Wall_Prefab.prefab b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Wall_Prefab.prefab
new file mode 100644
index 0000000000..f8dde4effc
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Wall_Prefab.prefab
@@ -0,0 +1,132 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &7993119983977949264
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7324705577624711914}
+ - component: {fileID: 5911343394670230863}
+ - component: {fileID: 8497650616581704069}
+ - component: {fileID: 9105854698657379725}
+ - component: {fileID: 1277700310800588604}
+ m_Layer: 0
+ m_Name: Wall_Prefab
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 73
+ m_IsActive: 1
+--- !u!4 &7324705577624711914
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.000000021855694, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &5911343394670230863
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ m_Mesh: {fileID: 6352809919239313146, guid: 34560503bf9d61046b252db98a8cf770, type: 3}
+--- !u!23 &8497650616581704069
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 2e2c886f4af8e304eb9a1e2e50d023b3, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 2
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!65 &9105854698657379725
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.25, y: 1.0095696, z: 2.9958286}
+ m_Center: {x: 0, y: 0.5047848, z: 1.5020857}
+--- !u!65 &1277700310800588604
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7993119983977949264}
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_IsTrigger: 0
+ m_ProvidesContacts: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Size: {x: 0.25, y: 2.0055175, z: 3.000146}
+ m_Center: {x: 0, y: 1.0027587, z: -1.499927}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Wall_Prefab.prefab.meta b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Wall_Prefab.prefab.meta
new file mode 100644
index 0000000000..42ef5284f2
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Prefabs/Wall_Prefab.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 3b9516be83427084ca3fffca42e7b6da
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Resources.meta b/Examples/OverridingScenesAndPrefabs/Assets/Resources.meta
new file mode 100644
index 0000000000..edebf21a13
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Resources.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6a51a9fbd254e544eb3e85853865f80d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Resources/BillingMode.json b/Examples/OverridingScenesAndPrefabs/Assets/Resources/BillingMode.json
new file mode 100644
index 0000000000..6f4bfb7103
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Resources/BillingMode.json
@@ -0,0 +1 @@
+{"androidStore":"GooglePlay"}
\ No newline at end of file
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Resources/BillingMode.json.meta b/Examples/OverridingScenesAndPrefabs/Assets/Resources/BillingMode.json.meta
new file mode 100644
index 0000000000..557e7d707c
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Resources/BillingMode.json.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: a1890189503409a4bb24dd4f0eab1f0a
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scenes.meta
new file mode 100644
index 0000000000..b398c5b4ab
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9bb955f9d9ef9c34d897f353c8643a1d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/BootstrapScene.unity b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/BootstrapScene.unity
new file mode 100644
index 0000000000..1493ee48f9
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/BootstrapScene.unity
@@ -0,0 +1,282 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 10
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_BakeOnSceneLoad: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 1
+ m_PVRFilteringGaussRadiusAO: 1
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &455857869
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 455857870}
+ - component: {fileID: 455857873}
+ - component: {fileID: 455857874}
+ - component: {fileID: 455857872}
+ - component: {fileID: 455857871}
+ m_Layer: 0
+ m_Name: NetworkManagerBootstrapper
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &455857870
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 455857869}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &455857871
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 455857869}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6960e84d07fb87f47956e7a81d71c4e6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_ProtocolType: 0
+ m_UseWebSockets: 0
+ m_UseEncryption: 0
+ m_MaxPacketQueueSize: 128
+ m_MaxPayloadSize: 6144
+ m_HeartbeatTimeoutMS: 500
+ m_ConnectTimeoutMS: 1000
+ m_MaxConnectAttempts: 60
+ m_DisconnectTimeoutMS: 30000
+ ConnectionData:
+ Address: 127.0.0.1
+ Port: 7777
+ ServerListenAddress: 127.0.0.1
+ DebugSimulator:
+ PacketDelayMS: 0
+ PacketJitterMS: 0
+ PacketDropRate: 0
+--- !u!114 &455857872
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 455857869}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 7db19e0e150e50d4ab23c69a086b8b6e, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ NetworkManagerExpanded: 1
+ NetworkConfig:
+ ProtocolVersion: 0
+ NetworkTransport: {fileID: 455857871}
+ PlayerPrefab: {fileID: 4710599683293591777, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ Prefabs:
+ NetworkPrefabsLists:
+ - {fileID: 11400000, guid: 3d25a2b1f6c12ee47bf7601c2edd7e70, type: 2}
+ TickRate: 30
+ ClientConnectionBufferTimeout: 10
+ ConnectionApproval: 0
+ ConnectionData:
+ EnableTimeResync: 0
+ TimeResyncInterval: 30
+ EnsureNetworkVariableLengthSafety: 0
+ EnableSceneManagement: 1
+ ForceSamePrefabs: 1
+ RecycleNetworkIds: 1
+ NetworkIdRecycleDelay: 120
+ RpcHashSize: 0
+ LoadSceneTimeOut: 120
+ SpawnTimeout: 10
+ EnableNetworkLogs: 1
+ NetworkTopology: 0
+ UseCMBService: 0
+ AutoSpawnPlayerPrefabClientSide: 1
+ NetworkProfilingMetrics: 1
+ OldPrefabList: []
+ RunInBackground: 1
+ LogLevel: 1
+ NetworkManagerBootstrapperExpanded: 1
+ TargetFrameRate: 100
+ EnableVSync: 0
+ m_OriginalVSyncCount: 1
+ m_ServicesRegistered: 1
+--- !u!114 &455857873
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 455857869}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c4251d3d650053a419a5c503babb13a6, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ SceneBootstrapLoaderExpanded: 0
+ MainMenuSceneAsset: {fileID: 102900000, guid: 1ec6afcedd7df124e91af7bfbcea59b2, type: 3}
+ ServerSceneDefines:
+ DefaultActiveScene: SharedScene
+ LocalScenes:
+ - ServerScene
+ DefaultActiveSceneAsset: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3}
+ LocalSceneAssets:
+ - {fileID: 102900000, guid: ee7bfa213000a594bb8011364915602e, type: 3}
+ SharedScenes: []
+ SharedSceneAssets: []
+ ClientSceneDefines:
+ DefaultActiveScene: SharedScene
+ LocalScenes:
+ - ClientScene
+ DefaultActiveSceneAsset: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3}
+ LocalSceneAssets:
+ - {fileID: 102900000, guid: d8ac305138d51a84dbbb734b81c4054e, type: 3}
+ m_MainMenuScene: MainMenu
+--- !u!114 &455857874
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 455857869}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5c472ff64b067344893ed2e632d0f9f1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ NetworkPrefab: {fileID: 4710599683293591777, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ NetworkPrefabOverride: {fileID: 6472733969592893139, guid: 3e5167b6e6bcb5645abb2dbc0078091e, type: 3}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 455857870}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/BootstrapScene.unity.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/BootstrapScene.unity.meta
new file mode 100644
index 0000000000..e2c316c516
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/BootstrapScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8077653236d44fd4b92cd4a96193e8b6
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/Camera.preset b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/Camera.preset
new file mode 100644
index 0000000000..b8bbae0a72
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/Camera.preset
@@ -0,0 +1,195 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!181963792 &2655988077585873504
+Preset:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Camera
+ m_TargetType:
+ m_NativeTypeID: 20
+ m_ManagedTypePPtr: {fileID: 0}
+ m_ManagedTypeFallback:
+ m_Properties:
+ - target: {fileID: 0}
+ propertyPath: m_Enabled
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_ClearFlags
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BackGroundColor.r
+ value: 0.066037714
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BackGroundColor.g
+ value: 0.066037714
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BackGroundColor.b
+ value: 0.066037714
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BackGroundColor.a
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_projectionMatrixMode
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_GateFitMode
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_FOVAxisMode
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Iso
+ value: 200
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_ShutterSpeed
+ value: 0.005
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Aperture
+ value: 16
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_FocusDistance
+ value: 10
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_FocalLength
+ value: 50
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BladeCount
+ value: 5
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Curvature.x
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Curvature.y
+ value: 11
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_BarrelClipping
+ value: 0.25
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Anamorphism
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_SensorSize.x
+ value: 36
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_SensorSize.y
+ value: 24
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_LensShift.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_LensShift.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_NormalizedViewPortRect.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_NormalizedViewPortRect.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_NormalizedViewPortRect.width
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_NormalizedViewPortRect.height
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: near clip plane
+ value: 0.3
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: far clip plane
+ value: 1000
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: field of view
+ value: 60
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: orthographic
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: orthographic size
+ value: 5
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_Depth
+ value: -1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_CullingMask.m_Bits
+ value: 4294967295
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_RenderingPath
+ value: -1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_TargetTexture
+ value:
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_TargetDisplay
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_TargetEye
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_HDR
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_AllowMSAA
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_AllowDynamicResolution
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_ForceIntoRT
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_OcclusionCulling
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_StereoConvergence
+ value: 10
+ objectReference: {fileID: 0}
+ - target: {fileID: 0}
+ propertyPath: m_StereoSeparation
+ value: 0.022
+ objectReference: {fileID: 0}
+ m_ExcludedProperties: []
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/Camera.preset.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/Camera.preset.meta
new file mode 100644
index 0000000000..3e327ecf36
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/Camera.preset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1807b530602915743868e6c3bdc1a93c
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2655988077585873504
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ClientScene.unity b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ClientScene.unity
new file mode 100644
index 0000000000..06eaad444d
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ClientScene.unity
@@ -0,0 +1,382 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 10
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_BakeOnSceneLoad: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 1
+ m_PVRFilteringGaussRadiusAO: 1
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1001 &27008424
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.25
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511854, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_Name
+ value: SceneLevelGeometry (1)
+ objectReference: {fileID: 0}
+ m_RemovedComponents:
+ - {fileID: 4012615691354089851, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615692791378777, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615691503252842, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615692269653853, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615691965054904, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ m_RemovedGameObjects:
+ - {fileID: 7080625901286762351, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 1854705290947220173, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 910007655143077103, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4674276234353933548, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+--- !u!1 &638077906
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 638077907}
+ - component: {fileID: 638077911}
+ - component: {fileID: 638077910}
+ m_Layer: 5
+ m_Name: ClientContent
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &638077907
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 638077906}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1082114250}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 1}
+ m_AnchorMax: {x: 0.5, y: 1}
+ m_AnchoredPosition: {x: 0, y: -32}
+ m_SizeDelta: {x: 180, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &638077910
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 638077906}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.8396226, g: 0.48815125, b: 0.019802418, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 23
+ m_FontStyle: 1
+ m_BestFit: 1
+ m_MinSize: 1
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: Client Canvas Content
+--- !u!222 &638077911
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 638077906}
+ m_CullTransparentMesh: 1
+--- !u!1 &1082114246
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1082114250}
+ - component: {fileID: 1082114249}
+ - component: {fileID: 1082114248}
+ - component: {fileID: 1082114247}
+ m_Layer: 5
+ m_Name: ClientCanvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1082114247
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1082114246}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1082114248
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1082114246}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &1082114249
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1082114246}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &1082114250
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1082114246}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 638077907}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 1082114250}
+ - {fileID: 27008424}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ClientScene.unity.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ClientScene.unity.meta
new file mode 100644
index 0000000000..65393dbc64
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ClientScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d8ac305138d51a84dbbb734b81c4054e
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/MainMenu.unity b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/MainMenu.unity
new file mode 100644
index 0000000000..45e6ae776b
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/MainMenu.unity
@@ -0,0 +1,607 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 10
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_BakeOnSceneLoad: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 1
+ m_PVRFilteringGaussRadiusAO: 1
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &559666861
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 559666865}
+ - component: {fileID: 559666864}
+ - component: {fileID: 559666863}
+ - component: {fileID: 559666862}
+ m_Layer: 5
+ m_Name: Canvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &559666862
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 559666861}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &559666863
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 559666861}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &559666864
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 559666861}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &559666865
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 559666861}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1419645487}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!1 &1031380542
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1031380545}
+ - component: {fileID: 1031380544}
+ - component: {fileID: 1031380543}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1031380543
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1031380542}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_SendPointerHoverToParent: 1
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1031380544
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1031380542}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!4 &1031380545
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1031380542}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1273064315
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1273064318}
+ - component: {fileID: 1273064317}
+ - component: {fileID: 1273064316}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &1273064316
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1273064315}
+ m_Enabled: 1
+--- !u!20 &1273064317
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1273064315}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 0.16037738, g: 0.16037738, b: 0.16037738, a: 1}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &1273064318
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1273064315}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1, z: -10}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1346095180
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1346095182}
+ - component: {fileID: 1346095181}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &1346095181
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1346095180}
+ m_Enabled: 1
+ serializedVersion: 11
+ m_Type: 1
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ForceVisible: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+ m_LightUnit: 1
+ m_LuxAtDistance: 1
+ m_EnableSpotReflector: 1
+--- !u!4 &1346095182
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1346095180}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &1419645486
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1419645487}
+ - component: {fileID: 1419645491}
+ - component: {fileID: 1419645490}
+ - component: {fileID: 1419645489}
+ - component: {fileID: 1419645488}
+ m_Layer: 5
+ m_Name: MainMenu
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1419645487
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1419645486}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 559666865}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 180, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1419645488
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1419645486}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6637cd674efb56a48a3d4d545d23a8d3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
+--- !u!114 &1419645489
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1419645486}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ GlobalObjectIdHash: 622675322
+ InScenePlacedSourceGlobalObjectIdHash: 0
+ DeferredDespawnTick: 0
+ Ownership: 1
+ AlwaysReplicateAsRoot: 0
+ SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 1
+ SpawnWithObservers: 1
+ DontDestroyWithOwner: 0
+ AutoObjectParentSync: 1
+ SyncOwnerTransformWhenParented: 1
+ AllowOwnerToParent: 0
+--- !u!114 &1419645490
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1419645486}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.8396226, g: 0.48815125, b: 0.019802418, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 23
+ m_FontStyle: 1
+ m_BestFit: 1
+ m_MinSize: 1
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: 'Mock Main Menu '
+--- !u!222 &1419645491
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1419645486}
+ m_CullTransparentMesh: 1
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 1273064318}
+ - {fileID: 1346095182}
+ - {fileID: 559666865}
+ - {fileID: 1031380545}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/MainMenu.unity.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/MainMenu.unity.meta
new file mode 100644
index 0000000000..f89877b055
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/MainMenu.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 1ec6afcedd7df124e91af7bfbcea59b2
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ProjectPrefabs.asset b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ProjectPrefabs.asset
new file mode 100644
index 0000000000..afdf3f97be
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ProjectPrefabs.asset
@@ -0,0 +1,26 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e651dbb3fbac04af2b8f5abf007ddc23, type: 3}
+ m_Name: ProjectPrefabs
+ m_EditorClassIdentifier:
+ IsDefault: 0
+ List:
+ - Override: 0
+ Prefab: {fileID: 4710599683293591777, guid: 90bfa3cd2cce8f14ead59b4dbdae92bb, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 6472733969592893139, guid: 3e5167b6e6bcb5645abb2dbc0078091e, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ProjectPrefabs.asset.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ProjectPrefabs.asset.meta
new file mode 100644
index 0000000000..402e4425d7
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ProjectPrefabs.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3d25a2b1f6c12ee47bf7601c2edd7e70
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ServerScene.unity b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ServerScene.unity
new file mode 100644
index 0000000000..577973e816
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ServerScene.unity
@@ -0,0 +1,402 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 10
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 0}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_BakeOnSceneLoad: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 512
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 256
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 1
+ m_PVRDenoiserTypeDirect: 1
+ m_PVRDenoiserTypeIndirect: 1
+ m_PVRDenoiserTypeAO: 1
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 1
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 1
+ m_PVRFilteringGaussRadiusAO: 1
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &405623521
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 405623522}
+ - component: {fileID: 405623526}
+ - component: {fileID: 405623525}
+ m_Layer: 5
+ m_Name: ConnectedPlayers
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &405623522
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 405623521}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1605560297}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: -116, y: 27}
+ m_SizeDelta: {x: 180, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &405623525
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 405623521}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.8396226, g: 0.48815125, b: 0.019802418, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 1
+ m_BestFit: 0
+ m_MinSize: 1
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: 'Players: 0'
+--- !u!222 &405623526
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 405623521}
+ m_CullTransparentMesh: 1
+--- !u!1 &1516152272
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1516152273}
+ - component: {fileID: 1516152277}
+ - component: {fileID: 1516152276}
+ m_Layer: 5
+ m_Name: ServerRuntime
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1516152273
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1516152272}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1605560297}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 1, y: 0}
+ m_AnchorMax: {x: 1, y: 0}
+ m_AnchoredPosition: {x: -116, y: 61}
+ m_SizeDelta: {x: 180, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1516152276
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1516152272}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.8396226, g: 0.48815125, b: 0.019802418, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 14
+ m_FontStyle: 1
+ m_BestFit: 0
+ m_MinSize: 1
+ m_MaxSize: 40
+ m_Alignment: 3
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: 'NetworkTick: 0'
+--- !u!222 &1516152277
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1516152272}
+ m_CullTransparentMesh: 1
+--- !u!1 &1605560293
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1605560297}
+ - component: {fileID: 1605560296}
+ - component: {fileID: 1605560295}
+ - component: {fileID: 1605560294}
+ - component: {fileID: 1605560298}
+ m_Layer: 5
+ m_Name: ServerCanvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1605560294
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1605560293}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &1605560295
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1605560293}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &1605560296
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1605560293}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &1605560297
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1605560293}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1516152273}
+ - {fileID: 405623522}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!114 &1605560298
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1605560293}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d370147e4c421014cb5dd4eee3b6a373, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ServerTime: {fileID: 1516152276}
+ PlayerCount: {fileID: 405623525}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 1605560297}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ServerScene.unity.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ServerScene.unity.meta
new file mode 100644
index 0000000000..21ce0ed652
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/ServerScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ee7bfa213000a594bb8011364915602e
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/SharedScene.unity b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/SharedScene.unity
new file mode 100644
index 0000000000..1af0fa5fa5
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/SharedScene.unity
@@ -0,0 +1,1343 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_OcclusionBakeSettings:
+ smallestOccluder: 5
+ smallestHole: 0.25
+ backfaceThreshold: 100
+ m_SceneGUID: 00000000000000000000000000000000
+ m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 10
+ m_Fog: 0
+ m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+ m_FogMode: 3
+ m_FogDensity: 0.01
+ m_LinearFogStart: 0
+ m_LinearFogEnd: 300
+ m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+ m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+ m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+ m_AmbientIntensity: 1
+ m_AmbientMode: 0
+ m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+ m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+ m_HaloStrength: 0.5
+ m_FlareStrength: 1
+ m_FlareFadeSpeed: 3
+ m_HaloTexture: {fileID: 0}
+ m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+ m_DefaultReflectionMode: 0
+ m_DefaultReflectionResolution: 128
+ m_ReflectionBounces: 1
+ m_ReflectionIntensity: 1
+ m_CustomReflection: {fileID: 0}
+ m_Sun: {fileID: 705507994}
+ m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_BakeOnSceneLoad: 0
+ m_GISettings:
+ serializedVersion: 2
+ m_BounceScale: 1
+ m_IndirectOutputScale: 1
+ m_AlbedoBoost: 1
+ m_EnvironmentLightingMode: 0
+ m_EnableBakedLightmaps: 1
+ m_EnableRealtimeLightmaps: 0
+ m_LightmapEditorSettings:
+ serializedVersion: 12
+ m_Resolution: 2
+ m_BakeResolution: 40
+ m_AtlasSize: 1024
+ m_AO: 0
+ m_AOMaxDistance: 1
+ m_CompAOExponent: 1
+ m_CompAOExponentDirect: 0
+ m_ExtractAmbientOcclusion: 0
+ m_Padding: 2
+ m_LightmapParameters: {fileID: 0}
+ m_LightmapsBakeMode: 1
+ m_TextureCompression: 1
+ m_ReflectionCompression: 2
+ m_MixedBakeMode: 2
+ m_BakeBackend: 1
+ m_PVRSampling: 1
+ m_PVRDirectSampleCount: 32
+ m_PVRSampleCount: 500
+ m_PVRBounces: 2
+ m_PVREnvironmentSampleCount: 500
+ m_PVREnvironmentReferencePointCount: 2048
+ m_PVRFilteringMode: 2
+ m_PVRDenoiserTypeDirect: 0
+ m_PVRDenoiserTypeIndirect: 0
+ m_PVRDenoiserTypeAO: 0
+ m_PVRFilterTypeDirect: 0
+ m_PVRFilterTypeIndirect: 0
+ m_PVRFilterTypeAO: 0
+ m_PVREnvironmentMIS: 0
+ m_PVRCulling: 1
+ m_PVRFilteringGaussRadiusDirect: 1
+ m_PVRFilteringGaussRadiusIndirect: 5
+ m_PVRFilteringGaussRadiusAO: 2
+ m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+ m_PVRFilteringAtrousPositionSigmaIndirect: 2
+ m_PVRFilteringAtrousPositionSigmaAO: 1
+ m_ExportTrainingData: 0
+ m_TrainingDataDestination: TrainingData
+ m_LightProbeSampleCountMultiplier: 4
+ m_LightingDataAsset: {fileID: 0}
+ m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_BuildSettings:
+ serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.4
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_NavMeshData: {fileID: 0}
+--- !u!1 &28232985
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 28232986}
+ - component: {fileID: 28232988}
+ - component: {fileID: 28232987}
+ - component: {fileID: 28232989}
+ - component: {fileID: 28232990}
+ m_Layer: 5
+ m_Name: ServerHostClientDisplay
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &28232986
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 479361665}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0.5, y: 0}
+ m_AnchorMax: {x: 0.5, y: 0}
+ m_AnchoredPosition: {x: 0, y: 20.5}
+ m_SizeDelta: {x: 180, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &28232987
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_FontData:
+ m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+ m_FontSize: 23
+ m_FontStyle: 1
+ m_BestFit: 1
+ m_MinSize: 1
+ m_MaxSize: 40
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text:
+--- !u!222 &28232988
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_CullTransparentMesh: 1
+--- !u!114 &28232989
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ GlobalObjectIdHash: 536662705
+ InScenePlacedSourceGlobalObjectIdHash: 0
+ DeferredDespawnTick: 0
+ Ownership: 1
+ AlwaysReplicateAsRoot: 0
+ SynchronizeTransform: 1
+ ActiveSceneSynchronization: 0
+ SceneMigrationSynchronization: 0
+ SpawnWithObservers: 1
+ DontDestroyWithOwner: 1
+ AutoObjectParentSync: 0
+ SyncOwnerTransformWhenParented: 0
+ AllowOwnerToParent: 0
+--- !u!114 &28232990
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 28232985}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 6637cd674efb56a48a3d4d545d23a8d3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ ShowTopMostFoldoutHeaderGroup: 1
+--- !u!1001 &45185844
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: OnExitTransferParentOnStay
+ value:
+ objectReference: {fileID: 621748559}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: DontDeparentIfParentedByOtherBody
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 3246499739
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -60
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -49.1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: StationaryBody-B
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Size.z
+ value: 19.891119
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Center.x
+ value: -0.038006783
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Center.z
+ value: -0.13657665
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1001 &66674670
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: OnExitTransferParentOnStay
+ value:
+ objectReference: {fileID: 520394643}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: DontDeparentIfParentedByOtherBody
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 4013775021
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -60
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -33.32
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: StationaryBody-A
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Size.z
+ value: 19.906477
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Center.x
+ value: -0.038006783
+ objectReference: {fileID: 0}
+ - target: {fileID: 8134939553748259768, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Center.z
+ value: 0.070830345
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1 &479361661
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 479361665}
+ - component: {fileID: 479361664}
+ - component: {fileID: 479361663}
+ - component: {fileID: 479361662}
+ m_Layer: 5
+ m_Name: SharedCanvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &479361662
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 479361661}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreReversedGraphics: 1
+ m_BlockingObjects: 0
+ m_BlockingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+--- !u!114 &479361663
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 479361661}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_UiScaleMode: 0
+ m_ReferencePixelsPerUnit: 100
+ m_ScaleFactor: 1
+ m_ReferenceResolution: {x: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 0
+--- !u!223 &479361664
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 479361661}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 0
+ m_Camera: {fileID: 0}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_VertexColorAlwaysGammaSpace: 0
+ m_AdditionalShaderChannelsFlag: 0
+ m_UpdateRectTransformForStandalone: 0
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &479361665
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 479361661}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 0, y: 0, z: 0}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 28232986}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0, y: 0}
+--- !u!114 &520394643 stripped
+MonoBehaviour:
+ m_CorrespondingSourceObject: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ m_PrefabInstance: {fileID: 45185844}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 374ac199eb18f0f468bc018a722775c2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &621748559 stripped
+MonoBehaviour:
+ m_CorrespondingSourceObject: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ m_PrefabInstance: {fileID: 66674670}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 374ac199eb18f0f468bc018a722775c2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!1 &705507993
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 705507995}
+ - component: {fileID: 705507994}
+ m_Layer: 0
+ m_Name: Directional Light
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!108 &705507994
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 705507993}
+ m_Enabled: 1
+ serializedVersion: 11
+ m_Type: 1
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 1
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 1
+ m_LightShadowCasterMode: 0
+ m_AreaSize: {x: 1, y: 1}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 6570
+ m_UseColorTemperature: 0
+ m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ForceVisible: 0
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+ m_LightUnit: 1
+ m_LuxAtDistance: 1
+ m_EnableSpotReflector: 1
+--- !u!4 &705507995
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 705507993}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &737227285
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 737227286}
+ m_Layer: 0
+ m_Name: PointF
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &737227286
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 737227285}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 60.5, y: -0.34, z: -68.5}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &748186899
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 3
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.25
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511849, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4012615692778511854, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ propertyPath: m_Name
+ value: SceneLevelGeometry
+ objectReference: {fileID: 0}
+ m_RemovedComponents:
+ - {fileID: 4012615691354089850, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615691354089845, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615692791378779, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615691503252836, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615692269653855, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615691965054906, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615692791378776, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615691503252837, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615692269653852, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ - {fileID: 4012615691965054907, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 3ec484313a7a6754dac871e620df8db2, type: 3}
+--- !u!1001 &857399335
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0.25
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotateDirection
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 1449196534
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -60.7
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 56.8
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: RotatingBody
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1 &963194225
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 963194228}
+ - component: {fileID: 963194227}
+ - component: {fileID: 963194226}
+ m_Layer: 0
+ m_Name: Main Camera
+ m_TagString: MainCamera
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!81 &963194226
+AudioListener:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 963194225}
+ m_Enabled: 1
+--- !u!20 &963194227
+Camera:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 963194225}
+ m_Enabled: 1
+ serializedVersion: 2
+ m_ClearFlags: 2
+ m_BackGroundColor: {r: 0, g: 0, b: 0, a: 1}
+ m_projectionMatrixMode: 1
+ m_GateFitMode: 2
+ m_FOVAxisMode: 0
+ m_Iso: 200
+ m_ShutterSpeed: 0.005
+ m_Aperture: 16
+ m_FocusDistance: 10
+ m_FocalLength: 50
+ m_BladeCount: 5
+ m_Curvature: {x: 2, y: 11}
+ m_BarrelClipping: 0.25
+ m_Anamorphism: 0
+ m_SensorSize: {x: 36, y: 24}
+ m_LensShift: {x: 0, y: 0}
+ m_NormalizedViewPortRect:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ near clip plane: 0.3
+ far clip plane: 1000
+ field of view: 60
+ orthographic: 0
+ orthographic size: 5
+ m_Depth: -1
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingPath: -1
+ m_TargetTexture: {fileID: 0}
+ m_TargetDisplay: 0
+ m_TargetEye: 3
+ m_HDR: 1
+ m_AllowMSAA: 1
+ m_AllowDynamicResolution: 0
+ m_ForceIntoRT: 0
+ m_OcclusionCulling: 1
+ m_StereoConvergence: 10
+ m_StereoSeparation: 0.022
+--- !u!4 &963194228
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 963194225}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0.15212336, y: 0, z: 0, w: 0.98836154}
+ m_LocalPosition: {x: 0, y: 4.5, z: -5.5}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 17.5, y: 0, z: 0}
+--- !u!1 &1184702125
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1184702128}
+ - component: {fileID: 1184702127}
+ - component: {fileID: 1184702126}
+ m_Layer: 0
+ m_Name: EventSystem
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &1184702126
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1184702125}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_SendPointerHoverToParent: 1
+ m_HorizontalAxis: Horizontal
+ m_VerticalAxis: Vertical
+ m_SubmitButton: Submit
+ m_CancelButton: Cancel
+ m_InputActionsPerSecond: 10
+ m_RepeatDelay: 0.5
+ m_ForceModuleActive: 0
+--- !u!114 &1184702127
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1184702125}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_FirstSelected: {fileID: 0}
+ m_sendNavigationEvents: 1
+ m_DragThreshold: 10
+--- !u!4 &1184702128
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1184702125}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1364678139
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1364678140}
+ m_Layer: 0
+ m_Name: PointC
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1364678140
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1364678139}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 10.9, y: 40.6, z: -70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1525255853
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1525255854}
+ m_Layer: 0
+ m_Name: PointD
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1525255854
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1525255853}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 10.9, y: -0.34, z: -70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &1591298748
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: ZAxisMove
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: PathMovement.Array.size
+ value: 4
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: NetworkTransformExpanded
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotatingBodyLogicExpanded
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[0]'
+ value:
+ objectReference: {fileID: 1851254366}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[1]'
+ value:
+ objectReference: {fileID: 1939125342}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[2]'
+ value:
+ objectReference: {fileID: 1364678139}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[3]'
+ value:
+ objectReference: {fileID: 1525255853}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 4258258070
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 10.9
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 70
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: 'ElevatorBody '
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1 &1851254366
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1851254367}
+ m_Layer: 0
+ m_Name: PointA
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1851254367
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1851254366}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 10.9, y: -0.34, z: 70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1900905072
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1900905073}
+ m_Layer: 0
+ m_Name: PointE
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1900905073
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1900905072}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 60.5, y: -0.34, z: 70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1939125342
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1939125343}
+ m_Layer: 0
+ m_Name: PointB
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1939125343
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1939125342}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 10.9, y: 40.6, z: 70}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &1968567121
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: ZAxisMove
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotationSpeed
+ value: 0.3
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: PathMovement.Array.size
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: RotatingBodyLogicExpanded
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[0]'
+ value:
+ objectReference: {fileID: 1900905072}
+ - target: {fileID: 850162744905636139, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: 'PathMovement.Array.data[1]'
+ value:
+ objectReference: {fileID: 737227285}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: GlobalObjectIdHash
+ value: 1259759422
+ objectReference: {fileID: 0}
+ - target: {fileID: 3307166493715739449, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: InScenePlacedSourceGlobalObjectIdHash
+ value: 1084435762
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 60
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: -0.34
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 70
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4291553105548296809, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5415449980466536476, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+ propertyPath: m_Name
+ value: MovingRotatingBody
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 0123d7125346c274da00b38e950a266b, type: 3}
+--- !u!1660057539 &9223372036854775807
+SceneRoots:
+ m_ObjectHideFlags: 0
+ m_Roots:
+ - {fileID: 963194228}
+ - {fileID: 705507995}
+ - {fileID: 479361665}
+ - {fileID: 1184702128}
+ - {fileID: 748186899}
+ - {fileID: 857399335}
+ - {fileID: 66674670}
+ - {fileID: 45185844}
+ - {fileID: 1968567121}
+ - {fileID: 1591298748}
+ - {fileID: 1851254367}
+ - {fileID: 1939125343}
+ - {fileID: 1364678140}
+ - {fileID: 1525255854}
+ - {fileID: 1900905073}
+ - {fileID: 737227286}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scenes/SharedScene.unity.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/SharedScene.unity.meta
new file mode 100644
index 0000000000..952bd1e9e1
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scenes/SharedScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9fc0d4010bbf28b4594072e72b8655ab
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts.meta
new file mode 100644
index 0000000000..528b6db2ae
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8f0135d923712c4438b2facb3ce21fb6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/InstanceTypeLocalBehavior.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/InstanceTypeLocalBehavior.cs
new file mode 100644
index 0000000000..e8bee77712
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/InstanceTypeLocalBehavior.cs
@@ -0,0 +1,108 @@
+using Unity.Netcode;
+using UnityEngine;
+
+
+///
+/// An example of how to get server or client specific behaviors without
+/// directly using a but still associating
+/// with a .
+///
+public class InstanceTypeLocalBehavior : MonoBehaviour, INetworkUpdateSystem
+{
+ [Tooltip("When enabled, this will run only on a server or host. When disabled, this will only run on the owner of the local client player (including host).")]
+ public bool ServerOnly;
+
+ [Tooltip("This is the unique message example text displayed when running locally.")]
+ public string UniqueLocalInstanceContent;
+
+ private MoverScriptNoRigidbody m_MoverScriptNoRigidbody;
+ private NetworkManager m_NetworkManager;
+ private float m_NextTimeToLogMessage;
+
+ private void Awake()
+ {
+ m_MoverScriptNoRigidbody = GetComponent();
+ m_MoverScriptNoRigidbody.NotifySpawnStatusChanged += OnSpawnStatusChanged;
+ }
+
+ ///
+ /// Adjust this logic to fit your needs.
+ /// This example makes the InstanceTypeLocalBehavior only update if:
+ /// - It is a server (including host) and is marked for ServerOnly
+ /// - It is a client (including host), is not marked for ServerOnly, and the local client is the owner of MoverScriptNoRigidbody.
+ /// - It is in distributed authority mode, is not marked for ServerOnly, and the local client has authority of the MoverScriptNoRigidbody.
+ ///
+ private bool HasAuthority()
+ {
+ if (m_NetworkManager == null)
+ {
+ return false;
+ }
+
+ if (!ServerOnly && m_NetworkManager.DistributedAuthorityMode && m_MoverScriptNoRigidbody.HasAuthority)
+ {
+ return true;
+ }
+ else
+ {
+ if (ServerOnly && m_NetworkManager.IsServer)
+ {
+ return true;
+ }
+ else if (!ServerOnly && m_MoverScriptNoRigidbody.IsOwner)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ ///
+ ///
+ /// Isolate the spawning status to the and just
+ /// use actions, ecents, or delegates to notify non-shared behaviors that are
+ /// only on a server or client version of a network prefab that has a .
+ ///
+ ///
+ private void OnSpawnStatusChanged(bool spawned)
+ {
+ if (spawned)
+ {
+ m_NetworkManager = m_MoverScriptNoRigidbody.NetworkManager;
+ if (HasAuthority())
+ {
+ NetworkUpdateLoop.RegisterNetworkUpdate(this, NetworkUpdateStage.Update);
+ }
+ }
+ else
+ {
+ // Whether registered or not, it is easier to just unregister always.
+ NetworkUpdateLoop.UnregisterAllNetworkUpdates(this);
+ m_NetworkManager = null;
+ }
+ }
+
+ ///
+ /// Invoked only on the instance(s) that have authority to update.
+ ///
+ ///
+ ///
+ public void NetworkUpdate(NetworkUpdateStage updateStage)
+ {
+ if (updateStage == NetworkUpdateStage.Update)
+ {
+ OnUpdate();
+ }
+ }
+
+
+ private void OnUpdate()
+ {
+ if (m_NextTimeToLogMessage < Time.realtimeSinceStartup)
+ {
+ var serverClient = m_MoverScriptNoRigidbody.IsServer ? "Server" : "Client";
+ NetworkManagerBootstrapper.Instance.LogMessage($"[{Time.realtimeSinceStartup}][{serverClient}-{m_MoverScriptNoRigidbody.name}] {UniqueLocalInstanceContent}");
+ m_NextTimeToLogMessage = Time.realtimeSinceStartup + 5.0f;
+ }
+ }
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/InstanceTypeLocalBehavior.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/InstanceTypeLocalBehavior.cs.meta
new file mode 100644
index 0000000000..e4a7e879ac
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/InstanceTypeLocalBehavior.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: bb9a9987a689bbe43a05463cf3713b22
\ No newline at end of file
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/MoverScriptNoRigidbody.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/MoverScriptNoRigidbody.cs
new file mode 100644
index 0000000000..5cc3865bfd
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/MoverScriptNoRigidbody.cs
@@ -0,0 +1,382 @@
+using System;
+using Unity.Netcode.Components;
+using Unity.Netcode;
+using UnityEngine;
+using Random = UnityEngine.Random;
+using Debug = UnityEngine.Debug;
+
+#region MoverScriptNoRigidbody Custom Editor
+#if UNITY_EDITOR
+using Unity.Netcode.Editor;
+using UnityEditor;
+
+///
+/// The custom editor for the component.
+///
+[CustomEditor(typeof(MoverScriptNoRigidbody), true)]
+[CanEditMultipleObjects]
+public class MoverScriptNoRigidbodyEditor : NetworkTransformEditor
+{
+ private SerializedProperty m_Radius;
+ private SerializedProperty m_Increment;
+ private SerializedProperty m_RotateSpeed;
+ private SerializedProperty m_MovementSpeed;
+ private SerializedProperty m_AirSpeedFactor;
+ private SerializedProperty m_Gravity;
+ private SerializedProperty m_ContinualChildMotion;
+
+
+ public override void OnEnable()
+ {
+ m_Radius = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.SpawnRadius));
+ m_Increment = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.Increment));
+ m_RotateSpeed = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.RotationSpeed));
+ m_MovementSpeed = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.MovementSpeed));
+ m_AirSpeedFactor = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.AirSpeedFactor));
+ m_Gravity = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.Gravity));
+ m_ContinualChildMotion = serializedObject.FindProperty(nameof(MoverScriptNoRigidbody.ContinualChildMotion));
+
+ base.OnEnable();
+ }
+
+ private void DisplayerMoverScriptNoRigidbodyProperties()
+ {
+ EditorGUILayout.PropertyField(m_Radius);
+ EditorGUILayout.PropertyField(m_Increment);
+ EditorGUILayout.PropertyField(m_RotateSpeed);
+ EditorGUILayout.PropertyField(m_MovementSpeed);
+ EditorGUILayout.PropertyField(m_AirSpeedFactor);
+ EditorGUILayout.PropertyField(m_Gravity);
+ EditorGUILayout.PropertyField(m_ContinualChildMotion);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var moverScriptNoRigidbody = target as MoverScriptNoRigidbody;
+ void SetExpanded(bool expanded) { moverScriptNoRigidbody.MoverScriptNoRigidbodyExpanded = expanded; };
+ DrawFoldOutGroup(moverScriptNoRigidbody.GetType(), DisplayerMoverScriptNoRigidbodyProperties, moverScriptNoRigidbody.MoverScriptNoRigidbodyExpanded, SetExpanded);
+ base.OnInspectorGUI();
+ }
+}
+#endif
+#endregion
+
+///
+/// The player controller for the player prefab
+///
+public class MoverScriptNoRigidbody : NetworkTransform
+{
+#if UNITY_EDITOR
+ // Inspector view expand/collapse settings for this derived child class
+ [HideInInspector]
+ public bool MoverScriptNoRigidbodyExpanded;
+#endif
+
+ private static bool s_EnablePlayerParentingText = true;
+
+ [Tooltip("Radius range a player will spawn within.")]
+ [Range(1.0f, 40.0f)]
+ public float SpawnRadius = 10.0f;
+
+ [Range(0.001f, 10.0f)]
+ public float Increment = 1.0f;
+
+ [Tooltip("The rotation speed multiplier.")]
+ [Range(0.01f, 2.0f)]
+ public float RotationSpeed = 1.0f;
+
+ [Tooltip("The forward movement speed.")]
+ [Range(0.01f, 30.0f)]
+ public float MovementSpeed = 15.0f;
+
+ [Tooltip("The jump launching speed.")]
+ [Range(1.0f, 20f)]
+ public float JumpSpeed = 10.0f;
+
+ [Tooltip("Determines how much the player's motion is applied when in the air.")]
+ [Range(0.01f, 1.0f)]
+ public float AirSpeedFactor = 0.35f;
+
+ [Range(-20.0f, 20.0f)]
+ public float Gravity = -9.8f;
+
+ [Tooltip("When enabled, the child spheres will continually move. When disabled, the child spheres will only move when the player moves.")]
+ public bool ContinualChildMotion = true;
+
+
+ private TextMesh m_ParentedText;
+ private PlayerColor m_PlayerColor;
+ private float m_JumpDelay;
+ private Vector3 m_WorldMotion = Vector3.zero;
+ private Vector3 m_CameraOriginalPosition;
+ private Quaternion m_CameraOriginalRotation;
+ private CharacterController m_CharacterController;
+ private PlayerBallMotion m_PlayerBallMotion;
+
+ public event Action NotifySpawnStatusChanged;
+
+ protected override void Awake()
+ {
+ m_ParentedText = GetComponentInChildren();
+ m_ParentedText?.gameObject.SetActive(false);
+ m_PlayerColor = GetComponent();
+ m_PlayerBallMotion = GetComponentInChildren();
+ base.Awake();
+ }
+
+ ///
+ /// Invoked after being instantiated, we can do other pre-spawn related
+ /// initilization tasks here.
+ ///
+ ///
+ /// This provides you with a reference to the current
+ /// since that is not set on the until it is spawned.
+ ///
+ ///
+ protected override void OnNetworkPreSpawn(ref NetworkManager networkManager)
+ {
+ m_CharacterController = GetComponent();
+ // By default, we always disable the CharacterController and only enable it on the
+ // owner/authority side.
+ m_CharacterController.enabled = false;
+ base.OnNetworkPreSpawn(ref networkManager);
+ }
+
+ ///
+ /// We are using post spawn to handle any final spawn initializations.
+ /// At this point we know all NetworkBehaviours on this instance has
+ /// been spawned.
+ ///
+ protected override void OnNetworkPostSpawn()
+ {
+ // Authority of this object sends local notifications to any non-networkbehaviour subscribers
+ NotifySpawnStatusChanged?.Invoke(true);
+
+ m_CharacterController.enabled = CanCommitToTransform;
+ if (CanCommitToTransform)
+ {
+ m_PlayerBallMotion.SetContinualMotion(ContinualChildMotion);
+ Random.InitState((int)DateTime.Now.Ticks);
+ transform.position += new Vector3(Random.Range(-SpawnRadius, SpawnRadius), 1.25f, Random.Range(0, SpawnRadius));
+ SetState(transform.position, null, null, false);
+ if (IsLocalPlayer)
+ {
+ NetworkObject.DontDestroyWithOwner = false;
+ m_CameraOriginalPosition = Camera.main.transform.position;
+ m_CameraOriginalRotation = Camera.main.transform.rotation;
+ Camera.main.transform.SetParent(transform, false);
+ }
+ }
+
+ if (NetworkObject.IsPlayerObject)
+ {
+ gameObject.name = $"Player-{OwnerClientId}";
+ }
+
+ m_ParentedText?.gameObject.SetActive(true);
+#if !DEDICATED_SERVER
+ UpdateParentedText();
+#endif
+ base.OnNetworkPostSpawn();
+ }
+
+ public override void OnNetworkDespawn()
+ {
+ // Notify any client or server specific componant that this instance has despawned.
+ NotifySpawnStatusChanged?.Invoke(false);
+ if (IsLocalPlayer)
+ {
+ m_CharacterController.enabled = false;
+ Camera.main.transform.SetParent(null, false);
+ Camera.main.transform.position = m_CameraOriginalPosition;
+ Camera.main.transform.rotation = m_CameraOriginalRotation;
+ }
+ base.OnNetworkDespawn();
+ }
+
+ ///
+ /// Bypass NetworkTransform's OnNetworkObjectParentChanged
+ ///
+ public override void OnNetworkObjectParentChanged(NetworkObject parentNetworkObject)
+ {
+ if (parentNetworkObject != null)
+ {
+ Debug.Log($"Parented under {parentNetworkObject.name}");
+ }
+#if !DEDICATED_SERVER
+ UpdateParentedText();
+#endif
+ base.OnNetworkObjectParentChanged(parentNetworkObject);
+ }
+
+ ///
+ /// This method handles both client-server and distributed authority network topologies
+ /// client-server: If we are not the server, then we need to send an Rpc to the server to handle parenting since the Character controller is disabled on the server for all client CharacterControllers (i.e. won't trigger).
+ /// distributed authority: If we are the authority, then handle parenting locally.
+ ///
+ ///
+ public void SetParent(NetworkObject parent)
+ {
+ if ((!NetworkManager.DistributedAuthorityMode && (IsServer || (NetworkObject.AllowOwnerToParent && IsOwner))) || (NetworkManager.DistributedAuthorityMode && HasAuthority))
+ {
+ if (parent != null)
+ {
+ NetworkObject.TrySetParent(parent);
+ }
+ else
+ {
+ NetworkObject.TryRemoveParent();
+ }
+ }
+ else if (!NetworkManager.DistributedAuthorityMode && !IsServer)
+ {
+ SetParentRpc(new NetworkObjectReference(parent));
+ }
+ }
+
+ [Rpc(SendTo.Server)]
+ public void SetParentRpc(NetworkObjectReference parentReference, RpcParams rpcParams = default)
+ {
+ var parent = (NetworkObject)null;
+ parentReference.TryGet(out parent, NetworkManager);
+ if (parent != null)
+ {
+ NetworkObject.TrySetParent(parent);
+ }
+ else
+ {
+ NetworkObject.TryRemoveParent();
+ }
+ }
+
+
+ private void Update()
+ {
+ if (!IsSpawned || !CanCommitToTransform)
+ {
+ return;
+ }
+ ApplyInput();
+ }
+
+
+ private Vector3 m_PushMotion = Vector3.zero;
+ ///
+ /// Since has issues with collisions and rotating bodies,
+ /// we have to simulate the collision using triggers.
+ ///
+ ///
+ ///
+ ///
+ /// direction to push away from
+ public void PushAwayFrom(Vector3 normal)
+ {
+ m_PushMotion += normal * MovementSpeed * 0.10f * Time.deltaTime;
+ }
+
+ ///
+ /// Handles player input
+ ///
+ private void ApplyInput()
+ {
+ // Simple rotation:
+ // Since the forward vector is perpendicular to the right vector of the player, we can just
+ // apply the +/- value to our forward direction and lerp our right vector towards that direction
+ // in order to get a reasonably smooth rotation.
+ var rotation = transform.forward;
+ m_WorldMotion = Vector3.Lerp(m_WorldMotion, m_CharacterController.isGrounded ? Vector3.zero : Vector3.up * Gravity, Time.deltaTime * 2f);
+ var motion = m_WorldMotion * Time.deltaTime + m_PushMotion;
+ var moveMotion = 0.0f;
+
+ if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
+ {
+ motion += transform.forward * MovementSpeed * Time.deltaTime * (m_CharacterController.isGrounded ? 1.0f : AirSpeedFactor);
+ moveMotion = 1.0f;
+ m_CharacterController.Move(motion);
+ }
+ if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
+ {
+ motion += (transform.forward * -MovementSpeed) * Time.deltaTime * (m_CharacterController.isGrounded ? 1.0f : AirSpeedFactor);
+ moveMotion = -1.0f;
+ m_CharacterController.Move(motion);
+ }
+
+ if (!m_CharacterController.isGrounded || m_JumpDelay > Time.realtimeSinceStartup || m_PushMotion.magnitude > 0.01f)
+ {
+ m_CharacterController.Move(motion);
+ }
+
+ if (Input.GetKeyDown(KeyCode.Space) && m_CharacterController.isGrounded)
+ {
+ m_JumpDelay = Time.realtimeSinceStartup + 0.5f;
+ m_WorldMotion = motion + Vector3.up * JumpSpeed;
+ }
+
+ if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
+ {
+ transform.right = Vector3.Lerp(transform.right, rotation * RotationSpeed, Time.deltaTime).normalized;
+ }
+ if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
+ {
+ transform.right = Vector3.Lerp(transform.right, rotation * -RotationSpeed, Time.deltaTime).normalized;
+ }
+
+ // Enabled/Disable player name, transform space, and parent TextMesh
+ if (Input.GetKeyDown(KeyCode.P))
+ {
+ s_EnablePlayerParentingText = !s_EnablePlayerParentingText;
+ }
+
+ if (Input.GetKeyDown(KeyCode.C))
+ {
+ ContinualChildMotion = !ContinualChildMotion;
+ m_PlayerBallMotion.SetContinualMotion(ContinualChildMotion);
+ }
+
+ m_PushMotion = Vector3.Lerp(m_PushMotion, Vector3.zero, 0.35f);
+
+ m_PlayerBallMotion.HasMotion(moveMotion);
+ }
+
+#if !DEDICATED_SERVER
+ ///
+ /// Updates player TextMesh relative to each client's camera view
+ ///
+ private void OnGUI()
+ {
+ if (m_ParentedText != null)
+ {
+ if (m_ParentedText.gameObject.activeInHierarchy != s_EnablePlayerParentingText)
+ {
+ m_ParentedText.gameObject.SetActive(s_EnablePlayerParentingText);
+ }
+ if (s_EnablePlayerParentingText)
+ {
+ var position = Camera.main.transform.position;
+ position.y = m_ParentedText.transform.position.y;
+ m_ParentedText.transform.LookAt(position, transform.up);
+ m_ParentedText.transform.forward = -m_ParentedText.transform.forward;
+ }
+ }
+ }
+
+ ///
+ /// Updates the contents of the parented
+ ///
+ private void UpdateParentedText()
+ {
+ if (m_ParentedText)
+ {
+ m_ParentedText.color = m_PlayerColor.Color;
+ if (transform.parent)
+ {
+ m_ParentedText.text = $"{gameObject.name}\n Local Space\n Parent: {transform.parent.name}";
+ }
+ else
+ {
+ m_ParentedText.text = $"{gameObject.name}\n WorldSpace\n Parent: None";
+ }
+ }
+ }
+#endif
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/MoverScriptNoRigidbody.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/MoverScriptNoRigidbody.cs.meta
new file mode 100644
index 0000000000..d1b709a9fb
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/MoverScriptNoRigidbody.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 5ce25b0b3f15e6446a88a85787c2f94a
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkManagerBootstrapper.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkManagerBootstrapper.cs
new file mode 100644
index 0000000000..da858b14ef
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkManagerBootstrapper.cs
@@ -0,0 +1,716 @@
+#if !DEDICATED_SERVER || (DEDICATED_SERVER && !UNITY_EDITOR)
+using System;
+#endif
+using System.Collections.Generic;
+using System.Linq;
+#if !DEDICATED_SERVER
+using System.Threading.Tasks;
+#endif
+using Unity.Netcode;
+#if !DEDICATED_SERVER
+using Unity.Services.Authentication;
+using Unity.Services.Core;
+using Unity.Services.Multiplayer;
+#else
+using Unity.Netcode.Transports.UTP;
+#endif
+using UnityEngine;
+#if !DEDICATED_SERVER
+using SessionState = Unity.Services.Multiplayer.SessionState;
+#endif
+
+#region NetworkManagerBootstrapperEditor
+#if UNITY_EDITOR
+using Unity.Netcode.Editor;
+using UnityEditor;
+
+///
+/// The custom editor for the component.
+///
+[CustomEditor(typeof(NetworkManagerBootstrapper), true)]
+[CanEditMultipleObjects]
+public class NetworkManagerBootstrapperEditor : NetworkManagerEditor
+{
+ private SerializedProperty m_TargetFrameRate;
+ private SerializedProperty m_EnableVSync;
+
+ public override void OnEnable()
+ {
+ m_TargetFrameRate = serializedObject.FindProperty(nameof(NetworkManagerBootstrapper.TargetFrameRate));
+ m_EnableVSync = serializedObject.FindProperty(nameof(NetworkManagerBootstrapper.EnableVSync));
+ base.OnEnable();
+ }
+
+ private void DisplayNetworkManagerBootstrapperProperties()
+ {
+ EditorGUILayout.PropertyField(m_TargetFrameRate);
+ EditorGUILayout.PropertyField(m_EnableVSync);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var extendedNetworkManager = target as NetworkManagerBootstrapper;
+ void SetExpanded(bool expanded) { extendedNetworkManager.NetworkManagerBootstrapperExpanded = expanded; };
+ DrawFoldOutGroup(extendedNetworkManager.GetType(), DisplayNetworkManagerBootstrapperProperties, extendedNetworkManager.NetworkManagerBootstrapperExpanded, SetExpanded);
+ base.OnInspectorGUI();
+ }
+}
+#endif
+#endregion
+
+///
+/// An extended NetworkManager to handle the bootstrap loading process specific to a client-server
+/// topology where one might want to have local server-side scenes, local client-side scenes, and shared (synchronized) scenes.
+///
+///
+public class NetworkManagerBootstrapper : NetworkManager
+{
+ #region Validation
+#if UNITY_EDITOR
+ // Inspector view expand/collapse settings for this derived child class
+ [HideInInspector]
+ public bool NetworkManagerBootstrapperExpanded;
+ protected override void OnValidateComponent()
+ {
+ m_OriginalVSyncCount = QualitySettings.vSyncCount;
+ m_ServicesRegistered = CloudProjectSettings.organizationName != string.Empty && CloudProjectSettings.organizationId != string.Empty;
+ base.OnValidateComponent();
+ }
+#endif
+#endregion
+
+ #region Properties
+ public static NetworkManagerBootstrapper Instance;
+
+ public int TargetFrameRate = 100;
+ public bool EnableVSync = false;
+
+ [HideInInspector]
+ [SerializeField]
+ private int m_OriginalVSyncCount;
+
+ ///
+ /// Example of how to control scene loading server local, client local, or shared.
+ /// Server local: nothing is synchronized with clients.
+ /// Client local: nothing is synchronized with the server.
+ /// Shared: Is synchronized with clients.
+ ///
+ private SceneBootstrapLoader m_SceneBootstrapLoader;
+
+ private enum ConnectionStates
+ {
+ None,
+ Connecting,
+ Connected,
+ }
+
+ private ConnectionStates m_ConnectionState;
+
+ [SerializeField]
+ private bool m_ServicesRegistered;
+#if !DEDICATED_SERVER
+ private ISession m_CurrentSession;
+ private string m_SessionName;
+ private string m_ProfileName;
+ private Task m_SessionTask;
+#endif
+#endregion
+
+ #region Initialization and Destroy
+ public static string GetRandomString(int length)
+ {
+ var r = new System.Random();
+ return new string(Enumerable.Range(0, length).Select(_ => (char)r.Next('a', 'z')).ToArray());
+ }
+
+ public void SetFrameRate(int targetFrameRate, bool enableVsync)
+ {
+ Application.targetFrameRate = targetFrameRate;
+ QualitySettings.vSyncCount = enableVsync ? m_OriginalVSyncCount : 0;
+ }
+
+ private void Awake()
+ {
+#if !DEDICATED_SERVER
+ Screen.SetResolution((int)(Screen.currentResolution.width * 0.40f), (int)(Screen.currentResolution.height * 0.40f), FullScreenMode.Windowed);
+ SetFrameRate(TargetFrameRate, EnableVSync);
+#endif
+ SetSingleton();
+ m_SceneBootstrapLoader = GetComponent();
+ }
+
+#if DEDICATED_SERVER
+ private void Start()
+ {
+ m_SceneBootstrapLoader.OnMainMenuLoaded += OnMainMenuLoaded;
+ m_SceneBootstrapLoader.LoadMainMenu();
+ }
+
+ private void OnMainMenuLoaded()
+ {
+ m_SceneBootstrapLoader.OnMainMenuLoaded -= OnMainMenuLoaded;
+ StartDedicatedServer();
+ }
+#else
+ private async void Start()
+ {
+ OnClientConnectedCallback += OnClientConnected;
+ OnClientDisconnectCallback += OnClientDisconnect;
+ OnConnectionEvent += OnClientConnectionEvent;
+
+ // Check to see if the project has been registered with an organization before trying to sign in
+ if (m_ServicesRegistered)
+ {
+ if (UnityServices.Instance != null && UnityServices.Instance.State != ServicesInitializationState.Initialized)
+ {
+ await UnityServices.InitializeAsync();
+ }
+ if (!AuthenticationService.Instance.IsSignedIn)
+ {
+ AuthenticationService.Instance.SignInFailed += SignInFailed;
+ AuthenticationService.Instance.SignedIn += SignedIn;
+ if (string.IsNullOrEmpty(m_ProfileName))
+ {
+ m_ProfileName = GetRandomString(5);
+ }
+ AuthenticationService.Instance.SwitchProfile(m_ProfileName);
+ await AuthenticationService.Instance.SignInAnonymouslyAsync();
+ }
+ }
+ m_SceneBootstrapLoader.LoadMainMenu();
+
+ }
+ private void OnDestroy()
+ {
+ OnClientConnectedCallback -= OnClientConnected;
+ OnClientDisconnectCallback -= OnClientDisconnect;
+ OnConnectionEvent -= OnClientConnectionEvent;
+ }
+#endif
+#endregion
+
+ #region Session and Connection Event Handling
+
+#if !DEDICATED_SERVER
+ private void OnClientConnectionEvent(NetworkManager networkManager, ConnectionEventData eventData)
+ {
+ LogMessage($"[{Time.realtimeSinceStartup}] Connection event {eventData.EventType} for Client-{eventData.ClientId}.");
+ }
+
+ private void OnClientConnected(ulong clientId)
+ {
+ LogMessage($"[{Time.realtimeSinceStartup}] Connected event invoked for Client-{clientId}.");
+ }
+
+ private void OnClientDisconnect(ulong clientId)
+ {
+ LogMessage($"[{Time.realtimeSinceStartup}] Disconnected event invoked for Client-{clientId}.");
+ }
+
+ private void SignedIn()
+ {
+ AuthenticationService.Instance.SignedIn -= SignedIn;
+ Debug.Log($"Signed in anonymously with profile {m_ProfileName}");
+ }
+
+ private void SignInFailed(RequestFailedException error)
+ {
+ AuthenticationService.Instance.SignInFailed -= SignInFailed;
+ Debug.LogError($"Failed to sign in {m_ProfileName} anonymously: {error}");
+ }
+
+ private void SessionStarted()
+ {
+ OnClientStarted -= SessionStarted;
+ m_ConnectionState = ConnectionStates.Connected;
+ if (IsServer)
+ {
+ LogMessage($"Server started session.");
+ }
+ else
+ {
+ LogMessage($"Client connecting to session.");
+ }
+ }
+
+ private void SessionStopped(bool isHost)
+ {
+ LogMessage($"NetworkManager has stopped.");
+ OnClientStopped -= SessionStopped;
+ m_ConnectionState = ConnectionStates.None;
+ if (IsServer)
+ {
+ ResetMainCamera();
+ }
+ }
+
+ private async Task ConnectThroughLiveService()
+ {
+ try
+ {
+ var options = new SessionOptions()
+ {
+ Name = m_SessionName,
+ MaxPlayers = 32
+ }.WithDistributedAuthorityNetwork();
+
+ m_CurrentSession = await MultiplayerService.Instance.CreateOrJoinSessionAsync(m_SessionName, options);
+ return m_CurrentSession;
+ }
+ catch (Exception e)
+ {
+ LogMessage($"{e.Message}");
+ Debug.LogException(e);
+ }
+ return null;
+ }
+#endif
+#endregion
+
+ #region GUI Menu
+#if !DEDICATED_SERVER
+ public void StartOrConnectToDistributedAuthoritySession()
+ {
+ m_SessionTask = ConnectThroughLiveService();
+ m_ConnectionState = ConnectionStates.Connecting;
+ LogMessage($"Connecting to session {m_SessionName}...");
+ }
+
+ private void OnUpdateGUIDisconnected()
+ {
+ var width = !m_ServicesRegistered ? 600 : 300;
+ GUILayout.BeginArea(new Rect(10, 10, width, 800));
+
+ if (NetworkConfig.NetworkTopology == NetworkTopologyTypes.DistributedAuthority)
+ {
+ if (!m_ServicesRegistered)
+ {
+ GUILayout.Label("Project-Settings:Services-General-Settings is not configured.");
+ GUILayout.Label("Distributed authority requires project to be registered with your organization's services account for authentication purposes.");
+ }
+ else
+ {
+ m_SessionName = GUILayout.TextField(m_SessionName);
+
+ if (GUILayout.Button("Create or Connect To Session"))
+ {
+ NetworkConfig.UseCMBService = true;
+ OnClientStopped += SessionStopped;
+ OnClientStarted += SessionStarted;
+ m_SceneBootstrapLoader.StartSession(SceneBootstrapLoader.StartAsTypes.Client);
+ }
+ }
+ }
+ else
+ {
+ if (GUILayout.Button("Start Server"))
+ {
+ OnServerStopped += SessionStopped;
+ OnServerStarted += SessionStarted;
+ m_SceneBootstrapLoader.StartSession(SceneBootstrapLoader.StartAsTypes.Server);
+ }
+
+ if (GUILayout.Button("Start Host"))
+ {
+ OnServerStopped += SessionStopped;
+ OnServerStarted += SessionStarted;
+ m_SceneBootstrapLoader.StartSession(SceneBootstrapLoader.StartAsTypes.Host);
+ }
+
+ if (GUILayout.Button("Start Client"))
+ {
+ OnClientStopped += SessionStopped;
+ OnClientStarted += SessionStarted;
+ m_SceneBootstrapLoader.StartSession(SceneBootstrapLoader.StartAsTypes.Client);
+ }
+ }
+ GUILayout.EndArea();
+ }
+
+ private int OnUpdateGUIConnected(int yAxisOffset)
+ {
+ GUILayout.BeginArea(new Rect(10, 10, 800, 800));
+ if (CMBServiceConnection)
+ {
+ GUILayout.Label($"Distributed Authority Session: {m_SessionName}");
+ if (LocalClient.IsSessionOwner)
+ {
+ GUILayout.Label("[Session Owner]");
+ yAxisOffset += 20;
+ }
+ }
+ else
+ {
+ GUILayout.Label($"Client-Server Session");
+ }
+ GUILayout.EndArea();
+
+ GUILayout.BeginArea(new Rect(Display.main.renderingWidth - 160, 10, 150, 80));
+ var endSessionText = IsServer && !DistributedAuthorityMode ? "Shutdown" : "Disconnect";
+ if (GUILayout.Button(endSessionText))
+ {
+ if (m_CurrentSession != null && m_CurrentSession.State == SessionState.Connected)
+ {
+ m_CurrentSession.LeaveAsync();
+ m_CurrentSession = null;
+ }
+ else
+ {
+ Shutdown();
+ }
+ }
+ GUILayout.EndArea();
+
+ return yAxisOffset;
+ }
+
+ private void OnGUI()
+ {
+ var yAxisOffset = 10;
+ switch (m_ConnectionState)
+ {
+ case ConnectionStates.None:
+ {
+ yAxisOffset = 80;
+ OnUpdateGUIDisconnected();
+ break;
+ }
+ case ConnectionStates.Connected:
+ {
+ yAxisOffset = OnUpdateGUIConnected(40);
+ break;
+ }
+ }
+
+ GUILayout.BeginArea(new Rect(10, yAxisOffset, 600, 800));
+ if (m_MessageLogs.Count > 0)
+ {
+ GUILayout.Label("-----------(Log)-----------");
+ // Display any messages logged to screen
+ foreach (var messageLog in m_MessageLogs)
+ {
+ GUILayout.Label(messageLog.Message);
+ }
+ GUILayout.Label("---------------------------");
+ }
+ GUILayout.EndArea();
+ }
+#endif
+#endregion
+
+ #region Server Camera Handling
+#if !DEDICATED_SERVER
+ private Vector3 m_CameraOriginalPosition;
+ private Quaternion m_CameraOriginalRotation;
+ private int m_CurrentFollowPlayerIndex = -1;
+ private MoverScriptNoRigidbody m_CurrentPlayerFollowed;
+
+ private void ResetMainCamera()
+ {
+ m_CurrentFollowPlayerIndex = -1;
+ SetCameraDefaults();
+ }
+ private void SetCameraDefaults()
+ {
+ if (Camera.main != null && Camera.main.transform.parent != null)
+ {
+ Camera.main.transform.SetParent(null, false);
+ Camera.main.transform.position = m_CameraOriginalPosition;
+ Camera.main.transform.rotation = m_CameraOriginalRotation;
+ }
+ }
+
+ ///
+ /// Server only (i.e. not host), follow players as they move around
+ ///
+ private void ServerFollowPlayerCheck()
+ {
+ bool leftBracket = Input.GetKeyDown(KeyCode.LeftBracket);
+ bool rightBracket = Input.GetKeyDown(KeyCode.RightBracket);
+
+ if ((leftBracket || rightBracket) && ConnectedClientsIds.Count > 0)
+ {
+ // Capture the main camera's original position and rotation the first time the server-side
+ // follows a player.
+ if (m_CurrentFollowPlayerIndex == -1)
+ {
+ m_CameraOriginalPosition = Camera.main.transform.position;
+ m_CameraOriginalRotation = Camera.main.transform.rotation;
+ }
+
+ if (leftBracket)
+ {
+ m_CurrentFollowPlayerIndex--;
+ if (m_CurrentFollowPlayerIndex < 0)
+ {
+ m_CurrentFollowPlayerIndex = ConnectedClientsIds.Count - 1;
+ }
+ }
+ else
+ {
+ m_CurrentFollowPlayerIndex++;
+ }
+
+ m_CurrentFollowPlayerIndex %= ConnectedClientsIds.Count;
+
+ var playerId = ConnectedClientsIds[m_CurrentFollowPlayerIndex];
+ var playerNetworkClient = ConnectedClients[playerId];
+ m_CurrentPlayerFollowed = playerNetworkClient.PlayerObject.GetComponent();
+ Camera.main.transform.SetParent(playerNetworkClient.PlayerObject.transform, false);
+ }
+ else if (Input.GetKeyDown(KeyCode.Backspace))
+ {
+ ClearFollowPlayer();
+ }
+ }
+ public void ClearFollowPlayer()
+ {
+ if (m_CurrentPlayerFollowed != null)
+ {
+ m_CurrentPlayerFollowed = null;
+ SetCameraDefaults();
+ }
+ }
+#endif
+#endregion
+
+ #region Update Methods and Properties
+#if DEDICATED_SERVER
+ private UnityTransport m_UnityTransport;
+ ///
+ /// All of the dedicated server specific script logic is contained and only compiled when DEDICATED_SERVER is defined
+ ///
+
+ private void StartDedicatedServer()
+ {
+ m_UnityTransport = NetworkConfig.NetworkTransport as UnityTransport;
+ if (m_UnityTransport != null)
+ {
+ // Always good to know what scenes are currently loaded since you might have
+ // different scenes to load for a DGS vs client
+ var scenesPreloaded = new System.Text.StringBuilder();
+ scenesPreloaded.Append("Scenes Preloaded: ");
+ for (int i = 0; i < UnityEngine.SceneManagement.SceneManager.sceneCount; i++)
+ {
+ var scene = UnityEngine.SceneManagement.SceneManager.GetSceneAt(i);
+ scenesPreloaded.Append($"[{scene.name}]");
+ }
+ Debug.Log(scenesPreloaded.ToString());
+
+ // Set the application frame rate to like 30 to reduce frame processing overhead
+ Application.targetFrameRate = 30;
+
+ Debug.Log($"[Pre-Init] Server Address Endpoint: {m_UnityTransport.ConnectionData.ServerEndPoint}");
+ Debug.Log($"[Pre-Init] Server Listen Endpoint: {m_UnityTransport.ConnectionData.ListenEndPoint}");
+ // Setup your IP and port sepcific to your DGS
+ //unityTransport.SetConnectionData(ListenAddress, ListenPort, ListenAddress);
+
+ //Debug.Log($"[Post-Init] Server Address Endpoint: {unityTransport.ConnectionData.ServerEndPoint}");
+ //Debug.Log($"[Post-Init] Server Listen Endpoint: {unityTransport.ConnectionData.ListenEndPoint}");
+
+ // Get the server started notification
+ OnServerStarted += ServerStarted;
+
+ // Start the server listening
+ m_SceneBootstrapLoader.StartSession(SceneBootstrapLoader.StartAsTypes.Server);
+ }
+ else
+ {
+ Debug.LogError("Failed to get the UnityTransport!");
+ }
+ }
+
+ ///
+ /// Register callbacks when the OnServerStarted callback is invoked.
+ /// This makes it easier to know you are registering for events only
+ /// when the server successfully has started.
+ ///
+ private void ServerStarted()
+ {
+ Debug.Log("Dedicated Server Started!");
+ Debug.Log($"[Started] Server Address Endpoint: {m_UnityTransport.ConnectionData.ServerEndPoint}");
+ Debug.Log($"[Started] Server Listen Endpoint: {m_UnityTransport.ConnectionData.ListenEndPoint}");
+ Debug.Log("===============================================================");
+ Debug.Log("[X] Exits session (Shutdown) | [ESC] Exits application instance");
+ Debug.Log("===============================================================");
+ OnServerStarted -= ServerStarted;
+ OnClientConnectedCallback += ClientConnectedCallback;
+ OnClientDisconnectCallback += ClientDisconnectCallback;
+ // Register for OnServerStopped
+ OnServerStopped += ServerStopped;
+ }
+
+ private void ServerStopped(bool obj)
+ {
+ OnClientConnectedCallback -= ClientConnectedCallback;
+ OnClientDisconnectCallback -= ClientDisconnectCallback;
+ OnServerStopped -= ServerStopped;
+ Debug.Log("Dedicated Server Stopped!");
+ Debug.Log("===============================================================");
+ Debug.Log("[S] Starts new session (StartServer) | [ESC] Exits application");
+ Debug.Log("===============================================================");
+ }
+
+ private void ClientConnectedCallback(ulong clientId)
+ {
+ Debug.Log($"Client-{clientId} connected and approved.");
+ }
+
+ private void ClientDisconnectCallback(ulong clientId)
+ {
+ Debug.Log($"Client-{clientId} disconnected.");
+ }
+
+#if UNITY_EDITOR
+ private void HandleEditorKeyCommands()
+ {
+ // Shutdown/Stop the server
+ if (Input.GetKeyDown(KeyCode.X) && IsListening && !ShutdownInProgress)
+ {
+ Shutdown();
+ }
+ else // Start the server (this example makes it automatically start when the application first starts)
+ if (Input.GetKeyDown(KeyCode.S) && !IsListening)
+ {
+ StartDedicatedServer();
+ }
+ }
+#else
+ private void HandleConsoleKeyCommands()
+ {
+ if (Console.KeyAvailable)
+ {
+ var networkManager = NetworkManager.Singleton;
+ var keyPressed = Console.ReadKey(true);
+ switch(keyPressed.Key)
+ {
+ case ConsoleKey.X:
+ {
+ if(networkManager.IsListening && !networkManager.ShutdownInProgress)
+ {
+ networkManager.Shutdown();
+ }
+ break;
+ }
+ case ConsoleKey.S:
+ {
+ if (!networkManager.IsListening && !networkManager.ShutdownInProgress)
+ {
+ StartDedicatedServer();
+ }
+ break;
+ }
+ case ConsoleKey.Escape:
+ {
+ Application.Quit();
+ break;
+ }
+ }
+ }
+ }
+#endif
+
+ ///
+ /// Update that is only included in the build and invoked when running as a dedicated server
+ ///
+ private void DedicatedServerUpdate()
+ {
+#if UNITY_EDITOR
+ HandleEditorKeyCommands();
+#else
+ HandleConsoleKeyCommands();
+#endif
+ }
+
+#else // End of DEDICATED_SERVER defined region
+
+ ///
+ /// General update for server-side
+ ///
+ private void ServerSideUpdate()
+ {
+ if (!IsHost)
+ {
+ ServerFollowPlayerCheck();
+ }
+ }
+
+ ///
+ /// General update for client-side
+ ///
+ private void ClientSideUpdate()
+ {
+
+ }
+#endif
+
+ private void Update()
+ {
+#if DEDICATED_SERVER
+ DedicatedServerUpdate();
+#else
+ if (IsListening)
+ {
+ if (IsServer)
+ {
+ ServerSideUpdate();
+ }
+ else
+ {
+ ClientSideUpdate();
+ }
+ }
+#endif
+
+ if (m_MessageLogs.Count == 0)
+ {
+ return;
+ }
+
+ for (int i = m_MessageLogs.Count - 1; i >= 0; i--)
+ {
+ if (m_MessageLogs[i].ExpirationTime < Time.realtimeSinceStartup)
+ {
+ m_MessageLogs.RemoveAt(i);
+ }
+ }
+ }
+
+ #endregion
+
+ #region Message Logging
+
+ private List m_MessageLogs = new List();
+
+ private class MessageLog
+ {
+ public string Message { get; private set; }
+ public float ExpirationTime { get; private set; }
+
+ public MessageLog(string msg, float timeToLive)
+ {
+ Message = msg;
+ ExpirationTime = Time.realtimeSinceStartup + timeToLive;
+ }
+ }
+
+ public void LogMessage(string msg, float timeToLive = 10.0f)
+ {
+ if (m_MessageLogs.Count > 0)
+ {
+ m_MessageLogs.Insert(0, new MessageLog(msg, timeToLive));
+ }
+ else
+ {
+ m_MessageLogs.Add(new MessageLog(msg, timeToLive));
+ }
+
+ Debug.Log(msg);
+ }
+ #endregion
+
+ public NetworkManagerBootstrapper()
+ {
+ Instance = this;
+ }
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkManagerBootstrapper.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkManagerBootstrapper.cs.meta
new file mode 100644
index 0000000000..29e94329b2
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkManagerBootstrapper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7db19e0e150e50d4ab23c69a086b8b6e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkPrefabOverrideHandler.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkPrefabOverrideHandler.cs
new file mode 100644
index 0000000000..9bba90b13a
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkPrefabOverrideHandler.cs
@@ -0,0 +1,67 @@
+using Unity.Netcode;
+using UnityEngine;
+
+///
+/// Handles spawning different prefab versions based on whether it is a server or client.
+/// !!! CAUTION !!!
+/// Both network prefabs **MUST** have the same components
+/// and any server or client specific components that are not netcode related but are
+/// dependencies of a component on only the server or client
+/// needs to have code within the component to account for
+/// any missing dependencies.
+///
+[RequireComponent(typeof(NetworkManager))]
+[RequireComponent(typeof(NetworkPrefabOverrideHandler))]
+public class NetworkPrefabOverrideHandler : MonoBehaviour, INetworkPrefabInstanceHandler
+{
+ public GameObject NetworkPrefab;
+ public GameObject NetworkPrefabOverride;
+
+ private NetworkManagerBootstrapper m_NetworkManager;
+
+ private void Start()
+ {
+ m_NetworkManager = GetComponent();
+ m_NetworkManager.PrefabHandler.AddHandler(NetworkPrefab, this);
+ NetworkManager.OnDestroying += NetworkManager_OnDestroying;
+ }
+
+ private void NetworkManager_OnDestroying(NetworkManager obj)
+ {
+ m_NetworkManager.PrefabHandler.RemoveHandler(NetworkPrefab);
+ }
+
+ ///
+ /// Invoked on both server and clients when the prefab is spawned.
+ /// Server-side will spawn the default network prefab.
+ /// Client-side will spawn the network prefab override version.
+ ///
+ /// the client identifier that will own this network prefab instance
+ /// optional to use the position passed in
+ /// optional to use the rotation passed in
+ ///
+ public NetworkObject Instantiate(ulong ownerClientId, Vector3 position, Quaternion rotation)
+ {
+ var gameObject = m_NetworkManager.IsClient ? Instantiate(NetworkPrefabOverride) : Instantiate(NetworkPrefab);
+ // You could integrate spawn locations here and on the server side apply the spawn position at
+ // this stage of the spawn process.
+ gameObject.transform.position = position;
+ gameObject.transform.rotation = rotation;
+ return gameObject.GetComponent();
+ }
+
+ public void Destroy(NetworkObject networkObject)
+ {
+#if !DEDICATED_SERVER
+ // Another useful thing about handling this instantiation and destruction of a NetworkObject is that you can do house cleaning
+ // prior to the object being destroyed. This handles the scenario where the server is following a player and the player disconnects.
+ // Before destroying the player object, we want to unparent the camera and reset the player being followed.
+ if (m_NetworkManager.IsServer && !m_NetworkManager.IsHost && Camera.main != null && Camera.main.transform.parent == networkObject.transform)
+ {
+ m_NetworkManager.ClearFollowPlayer();
+ }
+#endif
+ Destroy(networkObject.gameObject);
+ }
+}
+
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkPrefabOverrideHandler.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkPrefabOverrideHandler.cs.meta
new file mode 100644
index 0000000000..df7dd96d8e
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/NetworkPrefabOverrideHandler.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 5c472ff64b067344893ed2e632d0f9f1
\ No newline at end of file
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerBallMotion.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerBallMotion.cs
new file mode 100644
index 0000000000..7e525d6c33
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerBallMotion.cs
@@ -0,0 +1,126 @@
+using System.Collections.Generic;
+using Unity.Netcode.Components;
+using UnityEngine;
+using System.Linq;
+
+
+#if UNITY_EDITOR
+using Unity.Netcode.Editor;
+using UnityEditor;
+
+///
+/// The custom editor for the component.
+///
+[CustomEditor(typeof(PlayerBallMotion), true)]
+[CanEditMultipleObjects]
+public class PlayerBallMotionEditor : NetworkTransformEditor
+{
+ private SerializedProperty m_RotationAxis;
+ private SerializedProperty m_RotationSpeed;
+
+
+ public override void OnEnable()
+ {
+ m_RotationAxis = serializedObject.FindProperty(nameof(PlayerBallMotion.RotationAxis));
+ m_RotationSpeed = serializedObject.FindProperty(nameof(PlayerBallMotion.RotationSpeed));
+ base.OnEnable();
+ }
+
+ private void DrawPlayerBallMotionProperties()
+ {
+ EditorGUILayout.PropertyField(m_RotationAxis);
+ EditorGUILayout.PropertyField(m_RotationSpeed);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var playerBallMotion = target as PlayerBallMotion;
+ void SetExpanded(bool expanded) { playerBallMotion.ExpandPlayerBallMotion = expanded; };
+ DrawFoldOutGroup< PlayerBallMotion>(playerBallMotion.GetType(), DrawPlayerBallMotionProperties, playerBallMotion.ExpandPlayerBallMotion, SetExpanded);
+ base.OnInspectorGUI();
+ }
+}
+#endif
+
+public class PlayerBallMotion : NetworkTransform
+{
+#if UNITY_EDITOR
+ public bool ExpandPlayerBallMotion;
+ public bool ExpandNetworkTransform;
+#endif
+ public enum RotateAroundAxis
+ {
+ Up,
+ Right,
+ Forward
+ }
+
+ public RotateAroundAxis RotationAxis;
+ public float RotationSpeed = 1.5f;
+
+ private Vector3 m_AxisRotation = Vector3.zero;
+ private List m_Children;
+
+ private bool m_ContinualMotion;
+ private float m_CurrentRotionMotion = 1.0f;
+ public void SetContinualMotion(bool continualMotion)
+ {
+ m_ContinualMotion = continualMotion;
+ foreach (var child in m_Children)
+ {
+ child.SetContinualMotion(continualMotion);
+ }
+ }
+
+ protected override void Awake()
+ {
+ m_Children = GetComponentsInChildren().Where((c)=> c != this).ToList();
+ base.Awake();
+ }
+
+ private void SetRotationAixs()
+ {
+ switch (RotationAxis)
+ {
+ case RotateAroundAxis.Up:
+ {
+ m_AxisRotation = transform.parent.up;
+ break;
+ }
+ case RotateAroundAxis.Right:
+ {
+ m_AxisRotation = transform.parent.right;
+ break;
+ }
+ case RotateAroundAxis.Forward:
+ {
+ m_AxisRotation = transform.parent.forward;
+ break;
+ }
+ }
+ }
+
+ public void HasMotion(float direction)
+ {
+ if (direction == 0.0f)
+ {
+ if(!m_ContinualMotion)
+ {
+ return;
+ }
+ }
+ else
+ {
+ m_CurrentRotionMotion = RotationSpeed * direction;
+ }
+
+
+ transform.LookAt(transform.parent);
+ SetRotationAixs();
+ transform.RotateAround(transform.parent.position, m_AxisRotation, m_CurrentRotionMotion);
+ foreach(var child in m_Children)
+ {
+ child.HasMotion(direction);
+ }
+ }
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerBallMotion.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerBallMotion.cs.meta
new file mode 100644
index 0000000000..407e0adf7b
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerBallMotion.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 792d7ce524eb358469373fe12babef88
\ No newline at end of file
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerColor.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerColor.cs
new file mode 100644
index 0000000000..aa3dc8c4ba
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerColor.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using Unity.Netcode;
+using UnityEngine;
+
+
+public class PlayerColor : NetworkBehaviour
+{
+ private static Color[] s_Colors = { Color.red, Color.green, Color.blue, Color.cyan, Color.magenta, Color.yellow };
+ public bool ApplyColorToChildren;
+ public Color Color { get; private set; }
+ public List IgnoreChildren;
+
+ public override void OnNetworkSpawn()
+ {
+ MeshRenderer meshRenderer = GetComponent();
+ ulong myId = GetComponent().OwnerClientId - (ulong)(NetworkManager.DistributedAuthorityMode && NetworkManager.CMBServiceConnection ? 1 : 0);
+ Color = s_Colors[myId % Convert.ToUInt64(s_Colors.Length)];
+ if (meshRenderer)
+ {
+ meshRenderer.material.color = Color;
+ if (ApplyColorToChildren)
+ {
+ var meshRenderers = GetComponentsInChildren();
+ foreach (var childMeshRenderer in meshRenderers)
+ {
+ if (IgnoreChildren != null && IgnoreChildren.Contains(childMeshRenderer.gameObject))
+ {
+ continue;
+ }
+ childMeshRenderer.material.color = Color;
+ }
+ }
+ }
+
+ if (IsLocalPlayer)
+ {
+ var gameObject = FindAnyObjectByType();
+ if (gameObject != null)
+ {
+ var serverHost = gameObject.GetComponent();
+ serverHost?.SetColor(Color);
+ }
+ }
+ base.OnNetworkSpawn();
+ }
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerColor.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerColor.cs.meta
new file mode 100644
index 0000000000..90b6ca4628
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/PlayerColor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8e5128237997be649af0cc87dd0eb563
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/RotatingBodyLogic.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/RotatingBodyLogic.cs
new file mode 100644
index 0000000000..eaa32a77d6
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/RotatingBodyLogic.cs
@@ -0,0 +1,201 @@
+using System.Collections.Generic;
+using Unity.Netcode;
+using Unity.Netcode.Components;
+using UnityEngine;
+#if UNITY_EDITOR
+using Unity.Netcode.Editor;
+using UnityEditor;
+
+///
+/// The custom editor for the component.
+///
+[CustomEditor(typeof(RotatingBodyLogic), true)]
+[CanEditMultipleObjects]
+public class RotatingBodyLogicEditor : NetworkTransformEditor
+{
+ private SerializedProperty m_RotationSpeed;
+ private SerializedProperty m_RotateDirection;
+ private SerializedProperty m_OnExitTransferParentOnStay;
+ private SerializedProperty m_PathMotion;
+
+
+ public override void OnEnable()
+ {
+ m_RotationSpeed = serializedObject.FindProperty(nameof(RotatingBodyLogic.RotationSpeed));
+ m_RotateDirection = serializedObject.FindProperty(nameof(RotatingBodyLogic.RotateDirection));
+ m_OnExitTransferParentOnStay = serializedObject.FindProperty(nameof(RotatingBodyLogic.OnExitTransferParentOnStay));
+ m_PathMotion = serializedObject.FindProperty(nameof(RotatingBodyLogic.PathMovement));
+ base.OnEnable();
+ }
+
+ private void DisplayRotatingBodyLogicProperties()
+ {
+ EditorGUILayout.PropertyField(m_RotationSpeed);
+ EditorGUILayout.PropertyField(m_RotateDirection);
+ EditorGUILayout.PropertyField(m_OnExitTransferParentOnStay);
+ EditorGUILayout.PropertyField(m_PathMotion);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var rotatingBodyLogic = target as RotatingBodyLogic;
+ void SetExpanded(bool expanded) { rotatingBodyLogic.RotatingBodyLogicExpanded = expanded; };
+ DrawFoldOutGroup(rotatingBodyLogic.GetType(), DisplayRotatingBodyLogicProperties, rotatingBodyLogic.RotatingBodyLogicExpanded, SetExpanded);
+ base.OnInspectorGUI();
+ }
+}
+#endif
+
+///
+/// Handles rotating the large in-scene placed platform/tunnels and parenting/deparenting players
+///
+public class RotatingBodyLogic : NetworkTransform
+{
+#if UNITY_EDITOR
+ // Inspector view expand/collapse settings for this derived child class
+ [HideInInspector]
+ public bool RotatingBodyLogicExpanded;
+#endif
+
+ public enum RotationDirections
+ {
+ Clockwise,
+ CounterClockwise
+ }
+
+ [Range(0.0f, 2.0f)]
+ public float RotationSpeed = 1.0f;
+ public RotationDirections RotateDirection;
+ public RotatingBodyLogic OnExitTransferParentOnStay;
+ public List PathMovement;
+
+ private TagHandle m_TagHandle;
+ private float m_RotationDirection;
+
+ private int m_CurrentPathObject = -1;
+ private GameObject m_CurrentNavPoint;
+
+ protected override void OnNetworkPreSpawn(ref NetworkManager networkManager)
+ {
+ m_TagHandle = TagHandle.GetExistingTag("Player");
+ m_RotationDirection = RotateDirection == RotationDirections.Clockwise ? 1.0f : -1.0f;
+ SetNextPoint();
+ base.OnNetworkPreSpawn(ref networkManager);
+ }
+
+ private void SetNextPoint()
+ {
+ if (PathMovement == null || PathMovement.Count == 0)
+ {
+ return;
+ }
+ m_CurrentPathObject++;
+ m_CurrentPathObject %= PathMovement.Count;
+ m_CurrentNavPoint = PathMovement[m_CurrentPathObject];
+ }
+
+
+ ///
+ /// When triggered, the player is parented under the rotating body.
+ ///
+ ///
+ /// This is only triggered on the owner side since we disable the CharacterController
+ /// on all non-owner instances.
+ ///
+ private void OnTriggerEnter(Collider other)
+ {
+ if (!IsSpawned || !other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+ var nonRigidPlayerMover = other.GetComponent();
+ if (nonRigidPlayerMover != null)
+ {
+ nonRigidPlayerMover.SetParent(NetworkObject);
+ }
+ }
+
+ // This is used to handle NetworkObject to NetworkObject parenting detection
+ private List m_TriggerStayBodies = new List();
+
+ private void OnTriggerStay(Collider other)
+ {
+ if (!IsSpawned || !other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+ var nonRigidPlayerMover = other.GetComponent();
+ if (nonRigidPlayerMover != null)
+ {
+ if (!m_TriggerStayBodies.Contains(nonRigidPlayerMover))
+ {
+ m_TriggerStayBodies.Add(nonRigidPlayerMover);
+ }
+ }
+ }
+
+ internal bool HandleParentingForTriggerStayBodies(MoverScriptNoRigidbody moverScriptNoRigidbody)
+ {
+ if (m_TriggerStayBodies.Contains(moverScriptNoRigidbody))
+ {
+ moverScriptNoRigidbody.SetParent(NetworkObject);
+ return true;
+ }
+ return false;
+ }
+
+ ///
+ /// When triggered, the player is deparented from the rotating body.
+ ///
+ ///
+ /// This is only triggered on the owner side since we disable the CharacterController
+ /// on all non-owner instances.
+ ///
+ private void OnTriggerExit(Collider other)
+ {
+ if (!IsSpawned || !other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+
+ var nonRigidPlayerMover = other.GetComponent();
+ if (nonRigidPlayerMover != null)
+ {
+ m_TriggerStayBodies.Remove(nonRigidPlayerMover);
+ if (OnExitTransferParentOnStay && OnExitTransferParentOnStay.HandleParentingForTriggerStayBodies(nonRigidPlayerMover))
+ {
+ return;
+ }
+ // Otherwise, set parent back to root
+ nonRigidPlayerMover.SetParent(null);
+ }
+ }
+
+ ///
+ /// We rotate the body during late update to avoid fighting between the host/owner (depending upon network topology)
+ /// motion and the body's motion/rotation.
+ ///
+ private void LateUpdate()
+ {
+ if (!IsSpawned || !CanCommitToTransform)
+ {
+ return;
+ }
+
+ if (m_CurrentNavPoint != null)
+ {
+ if (Vector3.Distance(m_CurrentNavPoint.transform.position, transform.position) <= 0.05f)
+ {
+ SetNextPoint();
+ }
+
+ var direction = (m_CurrentNavPoint.transform.position - transform.position).normalized;
+ transform.position = Vector3.Lerp(transform.position, transform.position + direction * 10, Time.deltaTime);
+ }
+
+ if (RotationSpeed > 0.0f)
+ {
+ transform.right = Vector3.Lerp(transform.right, transform.forward * m_RotationDirection, Time.deltaTime * RotationSpeed);
+ }
+ }
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/RotatingBodyLogic.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/RotatingBodyLogic.cs.meta
new file mode 100644
index 0000000000..ce0ea09165
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/RotatingBodyLogic.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 374ac199eb18f0f468bc018a722775c2
\ No newline at end of file
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/SceneBootstrapLoader.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/SceneBootstrapLoader.cs
new file mode 100644
index 0000000000..256122618e
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/SceneBootstrapLoader.cs
@@ -0,0 +1,420 @@
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using Unity.Netcode;
+using UnityEngine;
+using UnityEngine.SceneManagement;
+#if UNITY_EDITOR
+using Unity.Netcode.Editor;
+using UnityEditor;
+
+///
+/// The custom editor for the component.
+///
+[CustomEditor(typeof(SceneBootstrapLoader), true)]
+[CanEditMultipleObjects]
+public class SceneBootstrapLoaderEditor : NetcodeEditorBase
+{
+ private SerializedProperty m_ServerSceneDefines;
+ private SerializedProperty m_ClientSceneDefines;
+
+ public override void OnEnable()
+ {
+ m_ServerSceneDefines = serializedObject.FindProperty(nameof(SceneBootstrapLoader.ServerSceneDefines));
+ m_ClientSceneDefines = serializedObject.FindProperty(nameof(SceneBootstrapLoader.ClientSceneDefines));
+ base.OnEnable();
+ }
+
+ private void DisplaySceneBootstrapLoaderProperties()
+ {
+ var sceneBootstrapLoader = target as SceneBootstrapLoader;
+ var networkManager = sceneBootstrapLoader.GetComponent();
+ if (networkManager.NetworkConfig.NetworkTopology == NetworkTopologyTypes.ClientServer)
+ {
+ EditorGUILayout.PropertyField(m_ServerSceneDefines);
+ }
+ EditorGUILayout.PropertyField(m_ClientSceneDefines);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ var sceneBootstrapLoader = target as SceneBootstrapLoader;
+ void SetExpanded(bool expanded) { sceneBootstrapLoader.SceneBootstrapLoaderExpanded = expanded; };
+ DrawFoldOutGroup(sceneBootstrapLoader.GetType(), DisplaySceneBootstrapLoaderProperties, sceneBootstrapLoader.SceneBootstrapLoaderExpanded, SetExpanded);
+ base.OnInspectorGUI();
+ }
+}
+
+#endif
+
+///
+/// Example of how to control scene loading using a additive client
+/// synchronization mode and server-side scene validation approach.
+///
+///
+/// This component should be added to the same GameObject that the component
+/// is attached to (for this example we extended to ).
+///
+[RequireComponent(typeof(NetworkManager))]
+[RequireComponent(typeof(SceneBootstrapLoader))]
+public class SceneBootstrapLoader : MonoBehaviour
+{
+#if UNITY_EDITOR
+ // Inspector view expand/collapse settings for this derived child class
+ [HideInInspector]
+ public bool SceneBootstrapLoaderExpanded;
+
+ [Tooltip("The main menu or out of session scene to load.")]
+ public SceneAsset MainMenuSceneAsset;
+
+ ///
+ /// Converts SceneAssets to scene names
+ ///
+ private void OnValidate()
+ {
+ if (MainMenuSceneAsset != null)
+ {
+ m_MainMenuScene = MainMenuSceneAsset.name;
+ }
+ var networkManager = GetComponent();
+ if (networkManager.NetworkConfig.NetworkTopology == NetworkTopologyTypes.ClientServer)
+ {
+ ServerSceneDefines.Validate();
+ }
+ ClientSceneDefines.Validate();
+ }
+#endif
+
+ [Tooltip("Defines how to handle scenes for the server instance.")]
+ public ServerSceneDefine ServerSceneDefines;
+ [Tooltip("Defines how to handle scenes for the client instance.")]
+ public SceneDefine ClientSceneDefines;
+
+ private NetworkManagerBootstrapper m_NetworkManager;
+ private string m_SceneCurrentlyLoading;
+ private string m_SceneJustLoaded;
+
+ [HideInInspector]
+ [SerializeField]
+ private string m_MainMenuScene;
+
+ private void Awake()
+ {
+ m_NetworkManager = GetComponent();
+ }
+
+ public event Action OnMainMenuLoaded;
+
+ ///
+ /// Should be invoked by bootstrap when first starting the applicaiton and should be loaded upon exiting
+ /// a session and shutting down the .
+ ///
+ public void LoadMainMenu()
+ {
+ if (!m_NetworkManager.IsListening)
+ {
+ SceneManager.LoadScene(m_MainMenuScene, LoadSceneMode.Single);
+ OnMainMenuLoaded?.Invoke();
+ }
+ else
+ {
+ Debug.LogWarning($"Trying to load main scene {m_MainMenuScene} while {nameof(NetworkManagerBootstrapper)} is still running!");
+ }
+ }
+
+ public enum StartAsTypes
+ {
+ Server,
+ Host,
+ Client
+ }
+
+ ///
+ /// Invoked by the when
+ /// starting a client or server.
+ ///
+ ///
+ public void StartSession(StartAsTypes startAsType)
+ {
+ StartCoroutine(PreSceneLoading(startAsType));
+ }
+
+ ///
+ /// Both clients and the server invoke this when they shutdown.
+ ///
+ private void OnNetworkManagerShutdown(bool wasHost)
+ {
+ LoadMainMenu();
+ }
+
+ #region SCENE PRE & POST START LOADING METHODS
+ private IEnumerator PreSceneLoading(StartAsTypes startAsType)
+ {
+ var sceneDefines = startAsType == StartAsTypes.Client ? ClientSceneDefines : ServerSceneDefines;
+ SceneManager.sceneLoaded += SceneLoaded;
+
+ // Unloads any currently loaded scenes and becomes the default active scene.
+ // The default active scene ** has to be shared ** because it is where GameObjects are
+ // instantiated (which includes where network prefabs are instantiated when spawned dynamically)
+ yield return HandleSceneLoading(sceneDefines.DefaultActiveScene, LoadSceneMode.Single);
+
+ // Now load our local server or clien scenes additively
+ foreach (var sceneName in sceneDefines.LocalScenes)
+ {
+ yield return HandleSceneLoading(sceneName, LoadSceneMode.Additive);
+ }
+
+ // When running as a host, we load the client scenes too
+ if (startAsType == StartAsTypes.Host)
+ {
+ foreach (var sceneName in ClientSceneDefines.LocalScenes)
+ {
+ yield return HandleSceneLoading(sceneName, LoadSceneMode.Additive);
+ }
+ }
+
+ SceneManager.sceneLoaded -= SceneLoaded;
+
+ // Now start the NetworkManager (server or client)
+ if (startAsType != StartAsTypes.Client && m_NetworkManager.NetworkConfig.NetworkTopology == NetworkTopologyTypes.ClientServer)
+ {
+ // Server needs to do some additional congiruations to ignore the local scene loaded and
+ // will load any additional shared and synchronized scenes via the NetworkSceneManager.
+ m_NetworkManager.OnServerStarted += OnServerStarted;
+ m_NetworkManager.OnServerStopped += OnNetworkManagerShutdown;
+ if (startAsType == StartAsTypes.Server)
+ {
+ m_NetworkManager.StartServer();
+ }
+#if !DEDICATED_SERVER
+ else
+ {
+ m_NetworkManager.StartHost();
+ }
+#endif
+ }
+#if !DEDICATED_SERVER
+ else
+ {
+ m_NetworkManager.OnClientStopped += OnNetworkManagerShutdown;
+
+ // Distributed authority needs to start using the service and needs to know when the client becomes
+ // the session owner.
+ if (m_NetworkManager.NetworkConfig.NetworkTopology == NetworkTopologyTypes.DistributedAuthority)
+ {
+ m_NetworkManager.OnSessionOwnerPromoted += OnSessionOwnerPromoted;
+ m_NetworkManager.StartOrConnectToDistributedAuthoritySession();
+ }
+ else
+ {
+ m_NetworkManager.StartClient();
+ }
+ }
+#endif
+ }
+
+ ///
+ /// When the session owner is promoted, it needs to configure itself for the additive client synchronization
+ /// and handle scene validations.
+ ///
+ ///
+ private void OnSessionOwnerPromoted(ulong sessionOwnerPromoted)
+ {
+ if (sessionOwnerPromoted == m_NetworkManager.LocalClientId)
+ {
+ // When we set the client synchronization mode to additive, the session owner will include this setting
+ // setting when synchronizing a newly joining client and the client will use any already loaded scenes
+ // that the session owner determines should be synchronized. If a scene that is being synchronized is not
+ // yet loaded, then the client will load that scene.
+ m_NetworkManager.SceneManager.SetClientSynchronizationMode(LoadSceneMode.Additive);
+
+ // Add a callback to control which scene the session owner synchronizes with clients
+ m_NetworkManager.SceneManager.VerifySceneBeforeLoading = SessionOwnerVerifySceneShouldBeSynchronized;
+ }
+ }
+
+ ///
+ /// Handles scene loading via or depending upon
+ /// whether the is started or not.
+ ///
+ private IEnumerator HandleSceneLoading(string sceneName, LoadSceneMode loadSceneMode)
+ {
+ m_SceneJustLoaded = string.Empty;
+ m_SceneCurrentlyLoading = sceneName;
+
+ // Server will be the only NetworkManager instance where this is true
+ if (m_NetworkManager.IsListening)
+ {
+
+ var loadingStatus = m_NetworkManager.SceneManager.LoadScene(sceneName, loadSceneMode);
+ if (loadingStatus != SceneEventProgressStatus.Started)
+ {
+ Debug.LogError($"{nameof(NetworkSceneManager)} attempted to load scene {sceneName} but returned a status of {loadingStatus}!");
+ yield break;
+ }
+ }
+ else // Client and Server will both use this to preload their local scenes
+ {
+ SceneManager.LoadScene(m_SceneCurrentlyLoading, loadSceneMode);
+ }
+ while (m_SceneJustLoaded != m_SceneCurrentlyLoading)
+ {
+ yield return null;
+ }
+ }
+
+ private void SceneLoaded(Scene scene, LoadSceneMode loadSceneMode)
+ {
+ m_SceneJustLoaded = scene.name;
+ }
+#endregion
+
+ #region SERVER POST START CONFIGURATION AND ADDITIONAL SHARED SCENE LOADING
+ ///
+ /// Starts the as a server.
+ ///
+ private void OnServerStarted()
+ {
+ m_NetworkManager.OnServerStarted -= OnServerStarted;
+
+ // When we set the client synchronization mode to additive, the server will include this setting
+ // when synchronizing a client and the client will use any already loaded scenes that the server
+ // wants to synchronize. If a scene that is being synchronized is not yet loaded, then the client
+ // will load that scene.
+ m_NetworkManager.SceneManager.SetClientSynchronizationMode(LoadSceneMode.Additive);
+
+ // Add a callback to control which scene the server synchronizes with clients
+ m_NetworkManager.SceneManager.VerifySceneBeforeLoading = ServerVerifySceneShouldBeSynchronized;
+
+ // If we have any additional shared scenes we want to load, then load them via NetworkSceneManager
+ if (ServerSceneDefines.SharedScenes.Count > 0)
+ {
+ StartCoroutine(ServerLoadAdditionalSharedScenes());
+ }
+ }
+
+ ///
+ /// When a client is first synchronized, the server will determine what scenes it should synchronize with the
+ /// client. This callback is invoked for every scene currently loaded and if it returns false then it will not
+ /// attempt to synchronize the scene with the client being synchronized.
+ ///
+ private bool ServerVerifySceneShouldBeSynchronized(int sceneIndex, string sceneName, LoadSceneMode loadSceneMode)
+ {
+ return !ServerSceneDefines.LocalScenes.Contains(sceneName);
+ }
+
+ ///
+ /// When a client is first synchronized, the session owner will determine what scenes it should synchronize with the
+ /// client. This callback is invoked for every scene currently loaded and if it returns false then it will not
+ /// attempt to synchronize the scene with the client being synchronized.
+ ///
+ ///
+ /// We use the for distributed authority to just exclude scenes that are already preloaded.
+ /// This is optional and semi-redundant since in a distributed network topology state is mirrored across all clients and
+ /// having locally loaded scenes not synchronized just limits where spawned objects can be migrated.
+ /// This is just for example purposes in the event you might need platform specific scenes loaded on a per client basis and/or
+ /// have some other project specific need to have locally loaded scenes that are not synchronized between all connected clients.
+ /// The recommended design for a distributed authority network topology is to just synchronize all scenes if possible.
+ ///
+ private bool SessionOwnerVerifySceneShouldBeSynchronized(int sceneIndex, string sceneName, LoadSceneMode loadSceneMode)
+ {
+ return !ClientSceneDefines.LocalScenes.Contains(sceneName);
+ }
+
+
+ private IEnumerator ServerLoadAdditionalSharedScenes()
+ {
+ m_NetworkManager.SceneManager.OnLoadEventCompleted += Server_OnLoadEventCompleted;
+
+ foreach (var sharedScene in ServerSceneDefines.SharedScenes)
+ {
+ yield return HandleSceneLoading(sharedScene, LoadSceneMode.Additive);
+ }
+ }
+
+ private void Server_OnLoadEventCompleted(string sceneName, LoadSceneMode loadSceneMode, List clientsCompleted, List clientsTimedOut)
+ {
+ m_SceneJustLoaded = sceneName;
+ }
+ #endregion
+}
+
+///
+/// The server scene defines included in (i.e. ) and this provides
+/// you with the ability to have additional additively loaded scenes that the server will
+/// synchronize with clients.
+///
+[Serializable]
+public class ServerSceneDefine : SceneDefine
+{
+ [HideInInspector]
+ public List SharedScenes;
+
+#if UNITY_EDITOR
+ [Tooltip("These scenes will be loaded additively upon starting a session and will be synchronized.")]
+ public List SharedSceneAssets;
+ protected override void OnValidate()
+ {
+ SharedScenes = new List();
+ foreach (var sharedSceneAsset in SharedSceneAssets)
+ {
+ if (sharedSceneAsset != null)
+ {
+ SharedScenes.Add(sharedSceneAsset.name);
+ }
+ }
+ base.OnValidate();
+ }
+#endif
+}
+
+///
+/// The base client and server scenes loaded prior to starting:
+/// : Must be synchonized/shared and is the default active scene.
+/// : Any client or server specific scenes you don't want synchronized, but
+/// want either the clients or server to load prior to starting a session.
+///
+[Serializable]
+public class SceneDefine
+{
+ [HideInInspector]
+ public string DefaultActiveScene;
+ [HideInInspector]
+ public List LocalScenes;
+
+#if UNITY_EDITOR
+ [Tooltip("This scene is synchronized and the default active scene loaded as LoadSceneMode.Single")]
+ public SceneAsset DefaultActiveSceneAsset;
+ [Tooltip("These scenes will be loaded additively and will not be synchronized.")]
+ public List LocalSceneAssets;
+
+ ///
+ /// Invoked by .
+ ///
+ ///
+ /// This is not the same as the Unity MonoBehaviour's OnValidate
+ ///
+ protected virtual void OnValidate()
+ {
+ DefaultActiveScene = string.Empty;
+ if (DefaultActiveSceneAsset)
+ {
+ DefaultActiveScene = DefaultActiveSceneAsset.name;
+ }
+ LocalScenes = new List();
+ foreach (var localSceneAsset in LocalSceneAssets)
+ {
+ if (localSceneAsset != null)
+ {
+ LocalScenes.Add(localSceneAsset.name);
+ }
+ }
+ }
+
+ public void Validate()
+ {
+ OnValidate();
+ }
+#endif
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/SceneBootstrapLoader.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/SceneBootstrapLoader.cs.meta
new file mode 100644
index 0000000000..adfb1bb99a
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/SceneBootstrapLoader.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: c4251d3d650053a419a5c503babb13a6
\ No newline at end of file
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerHostClientText.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerHostClientText.cs
new file mode 100644
index 0000000000..1319e54b85
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerHostClientText.cs
@@ -0,0 +1,88 @@
+using Unity.Netcode;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class ServerHostClientText : NetworkBehaviour
+{
+ private Text m_DisplayText;
+
+ private Color m_Color;
+ private Color m_ColorAlpha;
+ private Vector3 m_AnchoredPosition;
+
+ public void SetColor(Color color)
+ {
+ m_Color = color;
+ m_ColorAlpha = color;
+ m_ColorAlpha.a = 0.35f;
+ }
+
+ private void Awake()
+ {
+ m_AnchoredPosition = (transform as RectTransform).anchoredPosition3D;
+ m_DisplayText = GetComponent();
+ }
+
+ private void Start()
+ {
+ if (m_DisplayText != null)
+ {
+ m_DisplayText.text = string.Empty;
+ SetColor(m_DisplayText.color);
+ }
+ }
+
+ public override void OnNetworkSpawn()
+ {
+ if (m_DisplayText != null)
+ {
+ if (NetworkManager.IsServer)
+ {
+ m_DisplayText.text = NetworkManager.IsHost ? "Host" : "Server";
+ if (!NetworkManager.IsHost)
+ {
+ SetColor(Color.white);
+ m_ColorAlpha.a = 0.65f;
+ }
+ }
+ else if (NetworkManager.IsClient)
+ {
+ m_DisplayText.text = $"Client-{NetworkManager.LocalClientId}";
+ }
+ }
+ (transform as RectTransform).anchoredPosition3D = m_AnchoredPosition;
+ base.OnNetworkSpawn();
+ }
+
+ public override void OnNetworkDespawn()
+ {
+ if (m_DisplayText != null)
+ {
+ m_DisplayText.text = string.Empty;
+ }
+ base.OnNetworkDespawn();
+ }
+
+#if !DEDICATED_SERVER
+ private bool m_LastFocusedValue;
+
+ private void OnGUI()
+ {
+ if (!IsSpawned || m_LastFocusedValue == Application.isFocused)
+ {
+ return;
+ }
+
+ m_LastFocusedValue = Application.isFocused;
+
+ if (m_LastFocusedValue)
+ {
+ m_DisplayText.color = m_Color;
+ }
+ else
+ {
+ m_DisplayText.color = m_ColorAlpha;
+ }
+ }
+#endif
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerHostClientText.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerHostClientText.cs.meta
new file mode 100644
index 0000000000..081f5a96a8
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerHostClientText.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6637cd674efb56a48a3d4d545d23a8d3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerInfoDisplay.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerInfoDisplay.cs
new file mode 100644
index 0000000000..c4025fefc4
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerInfoDisplay.cs
@@ -0,0 +1,30 @@
+#if !DEDICATED_SERVER
+using Unity.Netcode;
+#endif
+using UnityEngine;
+using UnityEngine.UI;
+
+public class ServerInfoDisplay : MonoBehaviour
+{
+ public Text ServerTime;
+ public Text PlayerCount;
+#if !DEDICATED_SERVER
+ private void OnGUI()
+ {
+ if (!NetworkManager.Singleton || !NetworkManager.Singleton.IsListening)
+ {
+ return;
+ }
+
+ if (ServerTime)
+ {
+ ServerTime.text = $"NetworkTick: {NetworkManager.Singleton.ServerTime.Tick}";
+ }
+
+ if (PlayerCount)
+ {
+ PlayerCount.text = $"Player Count: {NetworkManager.Singleton.ConnectedClients.Count}";
+ }
+ }
+#endif
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerInfoDisplay.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerInfoDisplay.cs.meta
new file mode 100644
index 0000000000..8fcedfa9ff
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/ServerInfoDisplay.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: d370147e4c421014cb5dd4eee3b6a373
\ No newline at end of file
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/TriggerPush.cs b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/TriggerPush.cs
new file mode 100644
index 0000000000..ade22f3ed6
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/TriggerPush.cs
@@ -0,0 +1,63 @@
+using UnityEngine;
+
+///
+/// This helper class is used to push a player away from a rotating body.
+/// s without a don't
+/// handle collision with rotating bodies. This simulates a "collision".
+///
+public class TriggerPush : MonoBehaviour
+{
+ public enum RightOrLeft
+ {
+ Right,
+ Left
+ }
+
+ [Tooltip("Determines if this trigger will push the player to the left or right of the root transform")]
+ public RightOrLeft PushDirection;
+
+ private TagHandle m_TagHandle;
+
+ private void Awake()
+ {
+ m_TagHandle = TagHandle.GetExistingTag("Player");
+ }
+
+ private void PushObject(Collider other, bool isInside = false)
+ {
+ var nonRigidPlayerMover = other.GetComponent();
+ if (nonRigidPlayerMover != null && nonRigidPlayerMover.CanCommitToTransform)
+ {
+ // We determine the direction to push and if within a trigger we push a little more to prevent from
+ // completely clipping through the object.
+ var direction = (PushDirection == RightOrLeft.Right ? 1.0f : -1.0f) * (isInside ? 1.75f : 1.0f);
+ nonRigidPlayerMover.PushAwayFrom(transform.parent.right * direction);
+ }
+ }
+
+ ///
+ /// Pushes the player away from the object
+ ///
+ private void OnTriggerEnter(Collider other)
+ {
+ if (!other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+ PushObject(other);
+ }
+
+ ///
+ /// When the trigger is in a "stay" state, we need to signal that
+ /// the amount to "push away" should be increased.
+ ///
+ ///
+ private void OnTriggerStay(Collider other)
+ {
+ if (!other.CompareTag(m_TagHandle))
+ {
+ return;
+ }
+ PushObject(other, true);
+ }
+}
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Scripts/TriggerPush.cs.meta b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/TriggerPush.cs.meta
new file mode 100644
index 0000000000..7c07b1ebfc
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Scripts/TriggerPush.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 2c40721ca0fd31645a742e5ad0e0cdc5
\ No newline at end of file
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Settings.meta b/Examples/OverridingScenesAndPrefabs/Assets/Settings.meta
new file mode 100644
index 0000000000..bf54907342
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Settings.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f07d39c4f18773945af7943acf04dff7
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Settings/Build Profiles.meta b/Examples/OverridingScenesAndPrefabs/Assets/Settings/Build Profiles.meta
new file mode 100644
index 0000000000..c47c89da39
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Settings/Build Profiles.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 38b8655f79da8bd4ea13982ac8833b71
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Settings/Build Profiles/New Windows Server Profile.asset b/Examples/OverridingScenesAndPrefabs/Assets/Settings/Build Profiles/New Windows Server Profile.asset
new file mode 100644
index 0000000000..b5b4979d3e
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Settings/Build Profiles/New Windows Server Profile.asset
@@ -0,0 +1,49 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 15003, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name: New Windows Server Profile
+ m_EditorClassIdentifier:
+ m_AssetVersion: 1
+ m_BuildTarget: 19
+ m_Subtarget: 1
+ m_PlatformId: 8d1e1bca926649cba89d37a4c66e8b3d
+ m_PlatformBuildProfile:
+ rid: 4481205133896843345
+ m_OverrideGlobalSceneList: 0
+ m_Scenes: []
+ m_ScriptingDefines:
+ - DEDICATED_SERVER
+ m_PlayerSettingsYaml:
+ m_Settings: []
+ references:
+ version: 2
+ RefIds:
+ - rid: 4481205133896843345
+ type: {class: WindowsPlatformSettings, ns: UnityEditor.WindowsStandalone, asm: UnityEditor.WindowsStandalone.Extensions}
+ data:
+ m_Development: 0
+ m_ConnectProfiler: 0
+ m_BuildWithDeepProfilingSupport: 0
+ m_AllowDebugging: 0
+ m_WaitForManagedDebugger: 0
+ m_ManagedDebuggerFixedPort: 0
+ m_ExplicitNullChecks: 0
+ m_ExplicitDivideByZeroChecks: 0
+ m_ExplicitArrayBoundsChecks: 0
+ m_CompressionType: 0
+ m_InstallInBuildFolder: 0
+ m_WindowsBuildAndRunDeployTarget: 0
+ m_Architecture: 0
+ m_CreateSolution: 0
+ m_CopyPDBFiles: 0
+ m_WindowsDevicePortalAddress:
+ m_WindowsDevicePortalUsername:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Settings/Build Profiles/New Windows Server Profile.asset.meta b/Examples/OverridingScenesAndPrefabs/Assets/Settings/Build Profiles/New Windows Server Profile.asset.meta
new file mode 100644
index 0000000000..6543ae07a8
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Settings/Build Profiles/New Windows Server Profile.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ceabbe1f96a84864d8cecdc70db0a1f8
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures.meta b/Examples/OverridingScenesAndPrefabs/Assets/Textures.meta
new file mode 100644
index 0000000000..84caff0700
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Textures.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 22c34a08d52a0644fae5e90dbcc0ba52
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/GridPattern.png b/Examples/OverridingScenesAndPrefabs/Assets/Textures/GridPattern.png
new file mode 100644
index 0000000000..e2f648aacc
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Assets/Textures/GridPattern.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/GridPattern.png.meta b/Examples/OverridingScenesAndPrefabs/Assets/Textures/GridPattern.png.meta
new file mode 100644
index 0000000000..305bd2392c
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Textures/GridPattern.png.meta
@@ -0,0 +1,153 @@
+fileFormatVersion: 2
+guid: a092c5fa8c60ed04aa1d72555f1740bc
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 12
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: WebGL
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Windows Store Apps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 3
+ buildTarget: Server
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_BaseMap.png b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_BaseMap.png
new file mode 100644
index 0000000000..3f311d2225
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_BaseMap.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_BaseMap.png.meta b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_BaseMap.png.meta
new file mode 100644
index 0000000000..3a05497054
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_BaseMap.png.meta
@@ -0,0 +1,130 @@
+fileFormatVersion: 2
+guid: e71f43865e91e6b418bd0d67be2445dc
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Emissive.png b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Emissive.png
new file mode 100644
index 0000000000..df81ac1268
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Emissive.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Emissive.png.meta b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Emissive.png.meta
new file mode 100644
index 0000000000..bcfe13d8d7
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Emissive.png.meta
@@ -0,0 +1,130 @@
+fileFormatVersion: 2
+guid: 8bf2cf149563066489e749ea032dbca7
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Normal.png b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Normal.png
new file mode 100644
index 0000000000..1d060fba61
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Normal.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Normal.png.meta b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Normal.png.meta
new file mode 100644
index 0000000000..4a5b2ad61c
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_01_Normal.png.meta
@@ -0,0 +1,130 @@
+fileFormatVersion: 2
+guid: b94463ba36040ec4082132c54dd1bbad
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 1
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_02_BaseMap.png b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_02_BaseMap.png
new file mode 100644
index 0000000000..b3069b03d1
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_02_BaseMap.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_02_BaseMap.png.meta b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_02_BaseMap.png.meta
new file mode 100644
index 0000000000..7fbedef673
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Assets/Textures/Grid_02_BaseMap.png.meta
@@ -0,0 +1,130 @@
+fileFormatVersion: 2
+guid: 844faea9c35b2464c8ecb09f66e2e2f8
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/OverridingScenesAndPrefabs/Images/EndResultView.png b/Examples/OverridingScenesAndPrefabs/Images/EndResultView.png
new file mode 100644
index 0000000000..b98d38ee98
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Images/EndResultView.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Images/NetworkManagerBootstrapper.png b/Examples/OverridingScenesAndPrefabs/Images/NetworkManagerBootstrapper.png
new file mode 100644
index 0000000000..21a39012e9
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Images/NetworkManagerBootstrapper.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Images/NetworkManagerBootstrapperProperties.png b/Examples/OverridingScenesAndPrefabs/Images/NetworkManagerBootstrapperProperties.png
new file mode 100644
index 0000000000..8bf0db7fd8
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Images/NetworkManagerBootstrapperProperties.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Images/NetworkPrefabOverrideHandler.png b/Examples/OverridingScenesAndPrefabs/Images/NetworkPrefabOverrideHandler.png
new file mode 100644
index 0000000000..e5ce6e6835
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Images/NetworkPrefabOverrideHandler.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Images/SceneBootstrapLoader.png b/Examples/OverridingScenesAndPrefabs/Images/SceneBootstrapLoader.png
new file mode 100644
index 0000000000..d69118f4f6
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Images/SceneBootstrapLoader.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Images/ScenesView.png b/Examples/OverridingScenesAndPrefabs/Images/ScenesView.png
new file mode 100644
index 0000000000..49dcc587b6
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Images/ScenesView.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Images/ServiceSettings.png b/Examples/OverridingScenesAndPrefabs/Images/ServiceSettings.png
new file mode 100644
index 0000000000..ea7d2729d2
Binary files /dev/null and b/Examples/OverridingScenesAndPrefabs/Images/ServiceSettings.png differ
diff --git a/Examples/OverridingScenesAndPrefabs/Packages/manifest.json b/Examples/OverridingScenesAndPrefabs/Packages/manifest.json
new file mode 100644
index 0000000000..2ffae44925
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Packages/manifest.json
@@ -0,0 +1,56 @@
+{
+ "dependencies": {
+ "com.unity.2d.sprite": "1.0.0",
+ "com.unity.2d.tilemap": "1.0.0",
+ "com.unity.ads": "4.4.2",
+ "com.unity.ai.navigation": "2.0.4",
+ "com.unity.analytics": "3.8.1",
+ "com.unity.collab-proxy": "2.5.2",
+ "com.unity.feature.development": "1.0.2",
+ "com.unity.ide.rider": "3.0.31",
+ "com.unity.ide.visualstudio": "2.0.22",
+ "com.unity.multiplayer.center": "1.0.0",
+ "com.unity.netcode.gameobjects": "https://github.com/Unity-Technologies/com.unity.netcode.gameobjects.git?path=com.unity.netcode.gameobjects#develop-2.0.0",
+ "com.unity.purchasing": "4.12.2",
+ "com.unity.services.multiplayer": "1.0.0",
+ "com.unity.test-framework": "1.4.5",
+ "com.unity.timeline": "1.8.7",
+ "com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.9",
+ "com.unity.transport": "2.3.0",
+ "com.unity.ugui": "2.0.0",
+ "com.unity.visualscripting": "1.9.4",
+ "com.unity.xr.legacyinputhelpers": "2.1.11",
+ "com.unity.modules.accessibility": "1.0.0",
+ "com.unity.modules.ai": "1.0.0",
+ "com.unity.modules.androidjni": "1.0.0",
+ "com.unity.modules.animation": "1.0.0",
+ "com.unity.modules.assetbundle": "1.0.0",
+ "com.unity.modules.audio": "1.0.0",
+ "com.unity.modules.cloth": "1.0.0",
+ "com.unity.modules.director": "1.0.0",
+ "com.unity.modules.imageconversion": "1.0.0",
+ "com.unity.modules.imgui": "1.0.0",
+ "com.unity.modules.jsonserialize": "1.0.0",
+ "com.unity.modules.particlesystem": "1.0.0",
+ "com.unity.modules.physics": "1.0.0",
+ "com.unity.modules.physics2d": "1.0.0",
+ "com.unity.modules.screencapture": "1.0.0",
+ "com.unity.modules.terrain": "1.0.0",
+ "com.unity.modules.terrainphysics": "1.0.0",
+ "com.unity.modules.tilemap": "1.0.0",
+ "com.unity.modules.ui": "1.0.0",
+ "com.unity.modules.uielements": "1.0.0",
+ "com.unity.modules.umbra": "1.0.0",
+ "com.unity.modules.unityanalytics": "1.0.0",
+ "com.unity.modules.unitywebrequest": "1.0.0",
+ "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+ "com.unity.modules.unitywebrequestaudio": "1.0.0",
+ "com.unity.modules.unitywebrequesttexture": "1.0.0",
+ "com.unity.modules.unitywebrequestwww": "1.0.0",
+ "com.unity.modules.vehicles": "1.0.0",
+ "com.unity.modules.video": "1.0.0",
+ "com.unity.modules.vr": "1.0.0",
+ "com.unity.modules.wind": "1.0.0",
+ "com.unity.modules.xr": "1.0.0"
+ }
+}
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/ClusterInputManager.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/ClusterInputManager.asset
new file mode 100644
index 0000000000..e7886b266a
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/ClusterInputManager.asset
@@ -0,0 +1,6 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!236 &1
+ClusterInputManager:
+ m_ObjectHideFlags: 0
+ m_Inputs: []
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/DynamicsManager.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/DynamicsManager.asset
new file mode 100644
index 0000000000..735596aed0
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/DynamicsManager.asset
@@ -0,0 +1,37 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!55 &1
+PhysicsManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 17
+ m_Gravity: {x: 0, y: -9.81, z: 0}
+ m_DefaultMaterial: {fileID: 0}
+ m_BounceThreshold: 2
+ m_DefaultMaxDepenetrationVelocity: 10
+ m_SleepThreshold: 0.005
+ m_DefaultContactOffset: 0.01
+ m_DefaultSolverIterations: 6
+ m_DefaultSolverVelocityIterations: 1
+ m_QueriesHitBackfaces: 0
+ m_QueriesHitTriggers: 1
+ m_EnableAdaptiveForce: 0
+ m_ClothInterCollisionDistance: 0.1
+ m_ClothInterCollisionStiffness: 0.2
+ m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ m_SimulationMode: 0
+ m_AutoSyncTransforms: 0
+ m_ReuseCollisionCallbacks: 0
+ m_InvokeCollisionCallbacks: 1
+ m_ClothInterCollisionSettingsToggle: 0
+ m_ClothGravity: {x: 0, y: -9.81, z: 0}
+ m_ContactPairsMode: 0
+ m_BroadphaseType: 0
+ m_FrictionType: 0
+ m_EnableEnhancedDeterminism: 0
+ m_EnableUnifiedHeightmaps: 1
+ m_ImprovedPatchFriction: 0
+ m_SolverType: 0
+ m_DefaultMaxAngularSpeed: 50
+ m_ScratchBufferChunkCount: 4
+ m_CurrentBackendId: 4072204805
+ m_FastMotionThreshold: 3.4028235e+38
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/EditorBuildSettings.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/EditorBuildSettings.asset
new file mode 100644
index 0000000000..5494efdd30
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/EditorBuildSettings.asset
@@ -0,0 +1,24 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1045 &1
+EditorBuildSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Scenes:
+ - enabled: 1
+ path: Assets/Scenes/BootstrapScene.unity
+ guid: 8077653236d44fd4b92cd4a96193e8b6
+ - enabled: 1
+ path: Assets/Scenes/MainMenu.unity
+ guid: 1ec6afcedd7df124e91af7bfbcea59b2
+ - enabled: 1
+ path: Assets/Scenes/SharedScene.unity
+ guid: 9fc0d4010bbf28b4594072e72b8655ab
+ - enabled: 1
+ path: Assets/Scenes/ServerScene.unity
+ guid: ee7bfa213000a594bb8011364915602e
+ - enabled: 1
+ path: Assets/Scenes/ClientScene.unity
+ guid: d8ac305138d51a84dbbb734b81c4054e
+ m_configObjects: {}
+ m_UseUCBPForAssetBundles: 0
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/EditorSettings.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/EditorSettings.asset
new file mode 100644
index 0000000000..75d7ca8478
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/EditorSettings.asset
@@ -0,0 +1,48 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!159 &1
+EditorSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 13
+ m_SerializationMode: 2
+ m_LineEndingsForNewScripts: 2
+ m_DefaultBehaviorMode: 0
+ m_PrefabRegularEnvironment: {fileID: 0}
+ m_PrefabUIEnvironment: {fileID: 0}
+ m_SpritePackerMode: 0
+ m_SpritePackerCacheSize: 10
+ m_SpritePackerPaddingPower: 1
+ m_Bc7TextureCompressor: 0
+ m_EtcTextureCompressorBehavior: 1
+ m_EtcTextureFastCompressor: 1
+ m_EtcTextureNormalCompressor: 2
+ m_EtcTextureBestCompressor: 4
+ m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp;java;cpp;c;mm;m;h
+ m_ProjectGenerationRootNamespace:
+ m_EnableTextureStreamingInEditMode: 1
+ m_EnableTextureStreamingInPlayMode: 1
+ m_EnableEditorAsyncCPUTextureLoading: 0
+ m_AsyncShaderCompilation: 1
+ m_PrefabModeAllowAutoSave: 1
+ m_EnterPlayModeOptionsEnabled: 1
+ m_EnterPlayModeOptions: 0
+ m_GameObjectNamingDigits: 1
+ m_GameObjectNamingScheme: 0
+ m_AssetNamingUsesSpace: 1
+ m_InspectorUseIMGUIDefaultInspector: 0
+ m_UseLegacyProbeSampleCount: 0
+ m_SerializeInlineMappingsOnOneLine: 1
+ m_DisableCookiesInLightmapper: 0
+ m_AssetPipelineMode: 1
+ m_RefreshImportMode: 0
+ m_CacheServerMode: 0
+ m_CacheServerEndpoint:
+ m_CacheServerNamespacePrefix: default
+ m_CacheServerEnableDownload: 1
+ m_CacheServerEnableUpload: 1
+ m_CacheServerEnableAuth: 0
+ m_CacheServerEnableTls: 0
+ m_CacheServerValidationMode: 2
+ m_CacheServerDownloadBatchSize: 128
+ m_EnableEnlightenBakedGI: 0
+ m_ReferencedClipsExactNaming: 1
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/GraphicsSettings.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/GraphicsSettings.asset
new file mode 100644
index 0000000000..7c0ea0b5c3
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/GraphicsSettings.asset
@@ -0,0 +1,66 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!30 &1
+GraphicsSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 16
+ m_Deferred:
+ m_Mode: 1
+ m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
+ m_DeferredReflections:
+ m_Mode: 1
+ m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
+ m_ScreenSpaceShadows:
+ m_Mode: 1
+ m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
+ m_DepthNormals:
+ m_Mode: 1
+ m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
+ m_MotionVectors:
+ m_Mode: 1
+ m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
+ m_LightHalo:
+ m_Mode: 1
+ m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
+ m_LensFlare:
+ m_Mode: 1
+ m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
+ m_VideoShadersIncludeMode: 2
+ m_AlwaysIncludedShaders:
+ - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
+ - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
+ m_PreloadedShaders: []
+ m_PreloadShadersBatchTimeLimit: -1
+ m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+ m_CustomRenderPipeline: {fileID: 0}
+ m_TransparencySortMode: 0
+ m_TransparencySortAxis: {x: 0, y: 0, z: 1}
+ m_DefaultRenderingPath: 1
+ m_DefaultMobileRenderingPath: 1
+ m_TierSettings: []
+ m_LightmapStripping: 0
+ m_FogStripping: 0
+ m_InstancingStripping: 0
+ m_BrgStripping: 0
+ m_LightmapKeepPlain: 1
+ m_LightmapKeepDirCombined: 1
+ m_LightmapKeepDynamicPlain: 1
+ m_LightmapKeepDynamicDirCombined: 1
+ m_LightmapKeepShadowMask: 1
+ m_LightmapKeepSubtractive: 1
+ m_FogKeepLinear: 1
+ m_FogKeepExp: 1
+ m_FogKeepExp2: 1
+ m_AlbedoSwatchInfos: []
+ m_RenderPipelineGlobalSettingsMap: {}
+ m_LightsUseLinearIntensity: 0
+ m_LightsUseColorTemperature: 0
+ m_LogWhenShaderIsCompiled: 0
+ m_LightProbeOutsideHullStrategy: 1
+ m_CameraRelativeLightCulling: 0
+ m_CameraRelativeShadowCulling: 0
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/InputManager.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/InputManager.asset
new file mode 100644
index 0000000000..8068b2058b
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/InputManager.asset
@@ -0,0 +1,296 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!13 &1
+InputManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Axes:
+ - serializedVersion: 3
+ m_Name: Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: left
+ positiveButton: right
+ altNegativeButton: a
+ altPositiveButton: d
+ gravity: 3
+ dead: 0.001
+ sensitivity: 3
+ snap: 1
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton: down
+ positiveButton: up
+ altNegativeButton: s
+ altPositiveButton: w
+ gravity: 3
+ dead: 0.001
+ sensitivity: 3
+ snap: 1
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire1
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left ctrl
+ altNegativeButton:
+ altPositiveButton: mouse 0
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire2
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left alt
+ altNegativeButton:
+ altPositiveButton: mouse 1
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire3
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: left shift
+ altNegativeButton:
+ altPositiveButton: mouse 2
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Jump
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: space
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse X
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse Y
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 1
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Mouse ScrollWheel
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0
+ sensitivity: 0.1
+ snap: 0
+ invert: 0
+ type: 1
+ axis: 2
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Horizontal
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0.19
+ sensitivity: 1
+ snap: 0
+ invert: 0
+ type: 2
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Vertical
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton:
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 0
+ dead: 0.19
+ sensitivity: 1
+ snap: 0
+ invert: 1
+ type: 2
+ axis: 1
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire1
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 0
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire2
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 1
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Fire3
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 2
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Jump
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: joystick button 3
+ altNegativeButton:
+ altPositiveButton:
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Submit
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: return
+ altNegativeButton:
+ altPositiveButton: joystick button 0
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Submit
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: enter
+ altNegativeButton:
+ altPositiveButton: space
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ - serializedVersion: 3
+ m_Name: Cancel
+ descriptiveName:
+ descriptiveNegativeName:
+ negativeButton:
+ positiveButton: escape
+ altNegativeButton:
+ altPositiveButton: joystick button 1
+ gravity: 1000
+ dead: 0.001
+ sensitivity: 1000
+ snap: 0
+ invert: 0
+ type: 0
+ axis: 0
+ joyNum: 0
+ m_UsePhysicalKeys: 1
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/MemorySettings.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/MemorySettings.asset
new file mode 100644
index 0000000000..5b5facecac
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/MemorySettings.asset
@@ -0,0 +1,35 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!387306366 &1
+MemorySettings:
+ m_ObjectHideFlags: 0
+ m_EditorMemorySettings:
+ m_MainAllocatorBlockSize: -1
+ m_ThreadAllocatorBlockSize: -1
+ m_MainGfxBlockSize: -1
+ m_ThreadGfxBlockSize: -1
+ m_CacheBlockSize: -1
+ m_TypetreeBlockSize: -1
+ m_ProfilerBlockSize: -1
+ m_ProfilerEditorBlockSize: -1
+ m_BucketAllocatorGranularity: -1
+ m_BucketAllocatorBucketsCount: -1
+ m_BucketAllocatorBlockSize: -1
+ m_BucketAllocatorBlockCount: -1
+ m_ProfilerBucketAllocatorGranularity: -1
+ m_ProfilerBucketAllocatorBucketsCount: -1
+ m_ProfilerBucketAllocatorBlockSize: -1
+ m_ProfilerBucketAllocatorBlockCount: -1
+ m_TempAllocatorSizeMain: -1
+ m_JobTempAllocatorBlockSize: -1
+ m_BackgroundJobTempAllocatorBlockSize: -1
+ m_JobTempAllocatorReducedBlockSize: -1
+ m_TempAllocatorSizeGIBakingWorker: -1
+ m_TempAllocatorSizeNavMeshWorker: -1
+ m_TempAllocatorSizeAudioWorker: -1
+ m_TempAllocatorSizeCloudWorker: -1
+ m_TempAllocatorSizeGfx: -1
+ m_TempAllocatorSizeJobWorker: -1
+ m_TempAllocatorSizeBackgroundWorker: -1
+ m_TempAllocatorSizePreloadManager: -1
+ m_PlatformMemorySettings: {}
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/MultiplayerManager.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/MultiplayerManager.asset
new file mode 100644
index 0000000000..2a936644e0
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/MultiplayerManager.asset
@@ -0,0 +1,7 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!655991488 &1
+MultiplayerManager:
+ m_ObjectHideFlags: 0
+ m_EnableMultiplayerRoles: 0
+ m_StrippingTypes: {}
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/NavMeshAreas.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/NavMeshAreas.asset
new file mode 100644
index 0000000000..2e2e36968e
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/NavMeshAreas.asset
@@ -0,0 +1,93 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!126 &1
+NavMeshProjectSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ areas:
+ - name: Walkable
+ cost: 1
+ - name: Not Walkable
+ cost: 1
+ - name: Jump
+ cost: 2
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ - name:
+ cost: 1
+ m_LastAgentTypeID: -887442657
+ m_Settings:
+ - serializedVersion: 3
+ agentTypeID: 0
+ agentRadius: 0.5
+ agentHeight: 2
+ agentSlope: 45
+ agentClimb: 0.75
+ ledgeDropHeight: 0
+ maxJumpAcrossDistance: 0
+ minRegionArea: 2
+ manualCellSize: 0
+ cellSize: 0.16666667
+ manualTileSize: 0
+ tileSize: 256
+ buildHeightMesh: 0
+ maxJobWorkers: 0
+ preserveTilesOutsideBounds: 0
+ debug:
+ m_Flags: 0
+ m_SettingNames:
+ - Humanoid
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/Physics2DSettings.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/Physics2DSettings.asset
new file mode 100644
index 0000000000..c00eeb46fd
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/Physics2DSettings.asset
@@ -0,0 +1,56 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!19 &1
+Physics2DSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 6
+ m_Gravity: {x: 0, y: -9.81}
+ m_DefaultMaterial: {fileID: 0}
+ m_VelocityIterations: 8
+ m_PositionIterations: 3
+ m_BounceThreshold: 1
+ m_MaxLinearCorrection: 0.2
+ m_MaxAngularCorrection: 8
+ m_MaxTranslationSpeed: 100
+ m_MaxRotationSpeed: 360
+ m_BaumgarteScale: 0.2
+ m_BaumgarteTimeOfImpactScale: 0.75
+ m_TimeToSleep: 0.5
+ m_LinearSleepTolerance: 0.01
+ m_AngularSleepTolerance: 2
+ m_DefaultContactOffset: 0.01
+ m_ContactThreshold: 0
+ m_JobOptions:
+ serializedVersion: 2
+ useMultithreading: 0
+ useConsistencySorting: 0
+ m_InterpolationPosesPerJob: 100
+ m_NewContactsPerJob: 30
+ m_CollideContactsPerJob: 100
+ m_ClearFlagsPerJob: 200
+ m_ClearBodyForcesPerJob: 200
+ m_SyncDiscreteFixturesPerJob: 50
+ m_SyncContinuousFixturesPerJob: 50
+ m_FindNearestContactsPerJob: 100
+ m_UpdateTriggerContactsPerJob: 100
+ m_IslandSolverCostThreshold: 100
+ m_IslandSolverBodyCostScale: 1
+ m_IslandSolverContactCostScale: 10
+ m_IslandSolverJointCostScale: 10
+ m_IslandSolverBodiesPerJob: 50
+ m_IslandSolverContactsPerJob: 50
+ m_SimulationMode: 0
+ m_SimulationLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_MaxSubStepCount: 4
+ m_MinSubStepFPS: 30
+ m_UseSubStepping: 0
+ m_UseSubStepContacts: 0
+ m_QueriesHitTriggers: 1
+ m_QueriesStartInColliders: 1
+ m_CallbacksOnDisable: 1
+ m_ReuseCollisionCallbacks: 1
+ m_AutoSyncTransforms: 0
+ m_GizmoOptions: 10
+ m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/PresetManager.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/PresetManager.asset
new file mode 100644
index 0000000000..67a94daefe
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/PresetManager.asset
@@ -0,0 +1,7 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1386491679 &1
+PresetManager:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_DefaultPresets: {}
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/ProjectSettings.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/ProjectSettings.asset
new file mode 100644
index 0000000000..7894df05ea
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/ProjectSettings.asset
@@ -0,0 +1,782 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!129 &1
+PlayerSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 28
+ productGUID: 6859c206e4885eb4d9a885722be3daa1
+ AndroidProfiler: 0
+ AndroidFilterTouchesWhenObscured: 0
+ AndroidEnableSustainedPerformanceMode: 0
+ defaultScreenOrientation: 4
+ targetDevice: 2
+ useOnDemandResources: 0
+ accelerometerFrequency: 60
+ companyName: Unity Software
+ productName: OverridingScenesAndPrefabs
+ defaultCursor: {fileID: 0}
+ cursorHotspot: {x: 0, y: 0}
+ m_SplashScreenBackgroundColor: {r: 0.12156863, g: 0.12156863, b: 0.1254902, a: 1}
+ m_ShowUnitySplashScreen: 1
+ m_ShowUnitySplashLogo: 1
+ m_SplashScreenOverlayOpacity: 1
+ m_SplashScreenAnimation: 1
+ m_SplashScreenLogoStyle: 1
+ m_SplashScreenDrawMode: 0
+ m_SplashScreenBackgroundAnimationZoom: 1
+ m_SplashScreenLogoAnimationZoom: 1
+ m_SplashScreenBackgroundLandscapeAspect: 1
+ m_SplashScreenBackgroundPortraitAspect: 1
+ m_SplashScreenBackgroundLandscapeUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenBackgroundPortraitUvs:
+ serializedVersion: 2
+ x: 0
+ y: 0
+ width: 1
+ height: 1
+ m_SplashScreenLogos: []
+ m_VirtualRealitySplashScreen: {fileID: 0}
+ m_HolographicTrackingLossScreen: {fileID: 0}
+ defaultScreenWidth: 1920
+ defaultScreenHeight: 1080
+ defaultScreenWidthWeb: 960
+ defaultScreenHeightWeb: 600
+ m_StereoRenderingPath: 0
+ m_ActiveColorSpace: 0
+ unsupportedMSAAFallback: 0
+ m_SpriteBatchMaxVertexCount: 65535
+ m_SpriteBatchVertexThreshold: 300
+ m_MTRendering: 1
+ mipStripping: 0
+ numberOfMipsStripped: 0
+ numberOfMipsStrippedPerMipmapLimitGroup: {}
+ m_StackTraceTypes: 010000000100000001000000010000000100000001000000
+ iosShowActivityIndicatorOnLoading: -1
+ androidShowActivityIndicatorOnLoading: -1
+ iosUseCustomAppBackgroundBehavior: 0
+ allowedAutorotateToPortrait: 1
+ allowedAutorotateToPortraitUpsideDown: 1
+ allowedAutorotateToLandscapeRight: 1
+ allowedAutorotateToLandscapeLeft: 1
+ useOSAutorotation: 1
+ use32BitDisplayBuffer: 1
+ preserveFramebufferAlpha: 0
+ disableDepthAndStencilBuffers: 0
+ androidStartInFullscreen: 1
+ androidRenderOutsideSafeArea: 1
+ androidUseSwappy: 1
+ androidBlitType: 0
+ androidResizeableActivity: 1
+ androidDefaultWindowWidth: 1920
+ androidDefaultWindowHeight: 1080
+ androidMinimumWindowWidth: 400
+ androidMinimumWindowHeight: 300
+ androidFullscreenMode: 1
+ androidAutoRotationBehavior: 1
+ androidPredictiveBackSupport: 0
+ androidApplicationEntry: 2
+ defaultIsNativeResolution: 1
+ macRetinaSupport: 1
+ runInBackground: 1
+ muteOtherAudioSources: 0
+ Prepare IOS For Recording: 0
+ Force IOS Speakers When Recording: 0
+ deferSystemGesturesMode: 0
+ hideHomeButton: 0
+ submitAnalytics: 1
+ usePlayerLog: 1
+ dedicatedServerOptimizations: 1
+ bakeCollisionMeshes: 0
+ forceSingleInstance: 0
+ useFlipModelSwapchain: 1
+ resizableWindow: 1
+ useMacAppStoreValidation: 0
+ macAppStoreCategory: public.app-category.games
+ gpuSkinning: 1
+ meshDeformation: 1
+ xboxPIXTextureCapture: 0
+ xboxEnableAvatar: 0
+ xboxEnableKinect: 0
+ xboxEnableKinectAutoTracking: 0
+ xboxEnableFitness: 0
+ visibleInBackground: 1
+ allowFullscreenSwitch: 1
+ fullscreenMode: 3
+ xboxSpeechDB: 0
+ xboxEnableHeadOrientation: 0
+ xboxEnableGuest: 0
+ xboxEnablePIXSampling: 0
+ metalFramebufferOnly: 0
+ xboxOneResolution: 0
+ xboxOneSResolution: 0
+ xboxOneXResolution: 3
+ xboxOneMonoLoggingLevel: 0
+ xboxOneLoggingLevel: 1
+ xboxOneDisableEsram: 0
+ xboxOneEnableTypeOptimization: 0
+ xboxOnePresentImmediateThreshold: 0
+ switchQueueCommandMemory: 1048576
+ switchQueueControlMemory: 16384
+ switchQueueComputeMemory: 262144
+ switchNVNShaderPoolsGranularity: 33554432
+ switchNVNDefaultPoolsGranularity: 16777216
+ switchNVNOtherPoolsGranularity: 16777216
+ switchGpuScratchPoolGranularity: 2097152
+ switchAllowGpuScratchShrinking: 0
+ switchNVNMaxPublicTextureIDCount: 0
+ switchNVNMaxPublicSamplerIDCount: 0
+ switchMaxWorkerMultiple: 8
+ switchNVNGraphicsFirmwareMemory: 32
+ vulkanNumSwapchainBuffers: 3
+ vulkanEnableSetSRGBWrite: 0
+ vulkanEnablePreTransform: 0
+ vulkanEnableLateAcquireNextImage: 0
+ vulkanEnableCommandBufferRecycling: 1
+ loadStoreDebugModeEnabled: 0
+ visionOSBundleVersion: 1.0
+ tvOSBundleVersion: 1.0
+ bundleVersion: 1.0
+ preloadedAssets: []
+ metroInputSource: 0
+ wsaTransparentSwapchain: 0
+ m_HolographicPauseOnTrackingLoss: 1
+ xboxOneDisableKinectGpuReservation: 1
+ xboxOneEnable7thCore: 1
+ vrSettings:
+ enable360StereoCapture: 0
+ isWsaHolographicRemotingEnabled: 0
+ enableFrameTimingStats: 0
+ enableOpenGLProfilerGPURecorders: 1
+ allowHDRDisplaySupport: 0
+ useHDRDisplay: 0
+ hdrBitDepth: 0
+ m_ColorGamuts: 00000000
+ targetPixelDensity: 30
+ resolutionScalingMode: 0
+ resetResolutionOnWindowResize: 0
+ androidSupportedAspectRatio: 1
+ androidMaxAspectRatio: 2.1
+ androidMinAspectRatio: 1
+ applicationIdentifier:
+ Standalone: com.DefaultCompany.CharacterControllerMovingBodies
+ buildNumber:
+ Standalone: 0
+ VisionOS: 0
+ iPhone: 0
+ tvOS: 0
+ overrideDefaultApplicationIdentifier: 0
+ AndroidBundleVersionCode: 1
+ AndroidMinSdkVersion: 23
+ AndroidTargetSdkVersion: 0
+ AndroidPreferredInstallLocation: 1
+ aotOptions:
+ stripEngineCode: 1
+ iPhoneStrippingLevel: 0
+ iPhoneScriptCallOptimization: 0
+ ForceInternetPermission: 0
+ ForceSDCardPermission: 0
+ CreateWallpaper: 0
+ androidSplitApplicationBinary: 0
+ keepLoadedShadersAlive: 0
+ StripUnusedMeshComponents: 0
+ strictShaderVariantMatching: 0
+ VertexChannelCompressionMask: 4054
+ iPhoneSdkVersion: 988
+ iOSSimulatorArchitecture: 0
+ iOSTargetOSVersionString: 13.0
+ tvOSSdkVersion: 0
+ tvOSSimulatorArchitecture: 0
+ tvOSRequireExtendedGameController: 0
+ tvOSTargetOSVersionString: 13.0
+ VisionOSSdkVersion: 0
+ VisionOSTargetOSVersionString: 1.0
+ uIPrerenderedIcon: 0
+ uIRequiresPersistentWiFi: 0
+ uIRequiresFullScreen: 1
+ uIStatusBarHidden: 1
+ uIExitOnSuspend: 0
+ uIStatusBarStyle: 0
+ appleTVSplashScreen: {fileID: 0}
+ appleTVSplashScreen2x: {fileID: 0}
+ tvOSSmallIconLayers: []
+ tvOSSmallIconLayers2x: []
+ tvOSLargeIconLayers: []
+ tvOSLargeIconLayers2x: []
+ tvOSTopShelfImageLayers: []
+ tvOSTopShelfImageLayers2x: []
+ tvOSTopShelfImageWideLayers: []
+ tvOSTopShelfImageWideLayers2x: []
+ iOSLaunchScreenType: 0
+ iOSLaunchScreenPortrait: {fileID: 0}
+ iOSLaunchScreenLandscape: {fileID: 0}
+ iOSLaunchScreenBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreenFillPct: 100
+ iOSLaunchScreenSize: 100
+ iOSLaunchScreeniPadType: 0
+ iOSLaunchScreeniPadImage: {fileID: 0}
+ iOSLaunchScreeniPadBackgroundColor:
+ serializedVersion: 2
+ rgba: 0
+ iOSLaunchScreeniPadFillPct: 100
+ iOSLaunchScreeniPadSize: 100
+ iOSLaunchScreenCustomStoryboardPath:
+ iOSLaunchScreeniPadCustomStoryboardPath:
+ iOSDeviceRequirements: []
+ iOSURLSchemes: []
+ macOSURLSchemes: []
+ iOSBackgroundModes: 0
+ iOSMetalForceHardShadows: 0
+ metalEditorSupport: 1
+ metalAPIValidation: 1
+ metalCompileShaderBinary: 0
+ iOSRenderExtraFrameOnPause: 0
+ iosCopyPluginsCodeInsteadOfSymlink: 0
+ appleDeveloperTeamID:
+ iOSManualSigningProvisioningProfileID:
+ tvOSManualSigningProvisioningProfileID:
+ VisionOSManualSigningProvisioningProfileID:
+ iOSManualSigningProvisioningProfileType: 0
+ tvOSManualSigningProvisioningProfileType: 0
+ VisionOSManualSigningProvisioningProfileType: 0
+ appleEnableAutomaticSigning: 0
+ iOSRequireARKit: 0
+ iOSAutomaticallyDetectAndAddCapabilities: 1
+ appleEnableProMotion: 0
+ shaderPrecisionModel: 0
+ clonedFromGUID: 00000000000000000000000000000000
+ templatePackageId:
+ templateDefaultScene:
+ useCustomMainManifest: 0
+ useCustomLauncherManifest: 0
+ useCustomMainGradleTemplate: 0
+ useCustomLauncherGradleManifest: 0
+ useCustomBaseGradleTemplate: 0
+ useCustomGradlePropertiesTemplate: 0
+ useCustomGradleSettingsTemplate: 0
+ useCustomProguardFile: 0
+ AndroidTargetArchitectures: 2
+ AndroidSplashScreenScale: 0
+ androidSplashScreen: {fileID: 0}
+ AndroidKeystoreName:
+ AndroidKeyaliasName:
+ AndroidEnableArmv9SecurityFeatures: 0
+ AndroidEnableArm64MTE: 0
+ AndroidBuildApkPerCpuArchitecture: 0
+ AndroidTVCompatibility: 0
+ AndroidIsGame: 1
+ AndroidEnableTango: 0
+ androidEnableBanner: 1
+ androidUseLowAccuracyLocation: 0
+ androidUseCustomKeystore: 0
+ m_AndroidBanners:
+ - width: 320
+ height: 180
+ banner: {fileID: 0}
+ androidGamepadSupportLevel: 0
+ AndroidMinifyRelease: 0
+ AndroidMinifyDebug: 0
+ AndroidValidateAppBundleSize: 1
+ AndroidAppBundleSizeToValidate: 200
+ AndroidReportGooglePlayAppDependencies: 1
+ androidSymbolsSizeThreshold: 800
+ m_BuildTargetIcons: []
+ m_BuildTargetPlatformIcons:
+ - m_BuildTarget: Android
+ m_Icons:
+ - m_Textures: []
+ m_Width: 432
+ m_Height: 432
+ m_Kind: 2
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 324
+ m_Height: 324
+ m_Kind: 2
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 216
+ m_Height: 216
+ m_Kind: 2
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 162
+ m_Height: 162
+ m_Kind: 2
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 108
+ m_Height: 108
+ m_Kind: 2
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 81
+ m_Height: 81
+ m_Kind: 2
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 192
+ m_Height: 192
+ m_Kind: 1
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 144
+ m_Height: 144
+ m_Kind: 1
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 96
+ m_Height: 96
+ m_Kind: 1
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 72
+ m_Height: 72
+ m_Kind: 1
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 48
+ m_Height: 48
+ m_Kind: 1
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 36
+ m_Height: 36
+ m_Kind: 1
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 192
+ m_Height: 192
+ m_Kind: 0
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 144
+ m_Height: 144
+ m_Kind: 0
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 96
+ m_Height: 96
+ m_Kind: 0
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 72
+ m_Height: 72
+ m_Kind: 0
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 48
+ m_Height: 48
+ m_Kind: 0
+ m_SubKind:
+ - m_Textures: []
+ m_Width: 36
+ m_Height: 36
+ m_Kind: 0
+ m_SubKind:
+ m_BuildTargetBatching: []
+ m_BuildTargetShaderSettings: []
+ m_BuildTargetGraphicsJobs: []
+ m_BuildTargetGraphicsJobMode: []
+ m_BuildTargetGraphicsAPIs: []
+ m_BuildTargetVRSettings: []
+ m_DefaultShaderChunkSizeInMB: 16
+ m_DefaultShaderChunkCount: 0
+ openGLRequireES31: 0
+ openGLRequireES31AEP: 0
+ openGLRequireES32: 0
+ m_TemplateCustomTags: {}
+ mobileMTRendering:
+ Android: 1
+ VisionOS: 1
+ iPhone: 1
+ tvOS: 1
+ m_BuildTargetGroupLightmapEncodingQuality: []
+ m_BuildTargetGroupLightmapSettings: []
+ m_BuildTargetGroupLoadStoreDebugModeSettings: []
+ m_BuildTargetNormalMapEncoding: []
+ m_BuildTargetDefaultTextureCompressionFormat: []
+ playModeTestRunnerEnabled: 0
+ runPlayModeTestAsEditModeTest: 0
+ actionOnDotNetUnhandledException: 1
+ editorGfxJobOverride: 1
+ enableInternalProfiler: 0
+ logObjCUncaughtExceptions: 1
+ enableCrashReportAPI: 0
+ cameraUsageDescription:
+ locationUsageDescription:
+ microphoneUsageDescription:
+ bluetoothUsageDescription:
+ macOSTargetOSVersion: 11.0
+ switchNMETAOverride:
+ switchNetLibKey:
+ switchSocketMemoryPoolSize: 6144
+ switchSocketAllocatorPoolSize: 128
+ switchSocketConcurrencyLimit: 14
+ switchScreenResolutionBehavior: 2
+ switchUseCPUProfiler: 0
+ switchEnableFileSystemTrace: 0
+ switchLTOSetting: 0
+ switchApplicationID: 0x01004b9000490000
+ switchNSODependencies:
+ switchCompilerFlags:
+ switchTitleNames_0:
+ switchTitleNames_1:
+ switchTitleNames_2:
+ switchTitleNames_3:
+ switchTitleNames_4:
+ switchTitleNames_5:
+ switchTitleNames_6:
+ switchTitleNames_7:
+ switchTitleNames_8:
+ switchTitleNames_9:
+ switchTitleNames_10:
+ switchTitleNames_11:
+ switchTitleNames_12:
+ switchTitleNames_13:
+ switchTitleNames_14:
+ switchTitleNames_15:
+ switchPublisherNames_0:
+ switchPublisherNames_1:
+ switchPublisherNames_2:
+ switchPublisherNames_3:
+ switchPublisherNames_4:
+ switchPublisherNames_5:
+ switchPublisherNames_6:
+ switchPublisherNames_7:
+ switchPublisherNames_8:
+ switchPublisherNames_9:
+ switchPublisherNames_10:
+ switchPublisherNames_11:
+ switchPublisherNames_12:
+ switchPublisherNames_13:
+ switchPublisherNames_14:
+ switchPublisherNames_15:
+ switchIcons_0: {fileID: 0}
+ switchIcons_1: {fileID: 0}
+ switchIcons_2: {fileID: 0}
+ switchIcons_3: {fileID: 0}
+ switchIcons_4: {fileID: 0}
+ switchIcons_5: {fileID: 0}
+ switchIcons_6: {fileID: 0}
+ switchIcons_7: {fileID: 0}
+ switchIcons_8: {fileID: 0}
+ switchIcons_9: {fileID: 0}
+ switchIcons_10: {fileID: 0}
+ switchIcons_11: {fileID: 0}
+ switchIcons_12: {fileID: 0}
+ switchIcons_13: {fileID: 0}
+ switchIcons_14: {fileID: 0}
+ switchIcons_15: {fileID: 0}
+ switchSmallIcons_0: {fileID: 0}
+ switchSmallIcons_1: {fileID: 0}
+ switchSmallIcons_2: {fileID: 0}
+ switchSmallIcons_3: {fileID: 0}
+ switchSmallIcons_4: {fileID: 0}
+ switchSmallIcons_5: {fileID: 0}
+ switchSmallIcons_6: {fileID: 0}
+ switchSmallIcons_7: {fileID: 0}
+ switchSmallIcons_8: {fileID: 0}
+ switchSmallIcons_9: {fileID: 0}
+ switchSmallIcons_10: {fileID: 0}
+ switchSmallIcons_11: {fileID: 0}
+ switchSmallIcons_12: {fileID: 0}
+ switchSmallIcons_13: {fileID: 0}
+ switchSmallIcons_14: {fileID: 0}
+ switchSmallIcons_15: {fileID: 0}
+ switchManualHTML:
+ switchAccessibleURLs:
+ switchLegalInformation:
+ switchMainThreadStackSize: 1048576
+ switchPresenceGroupId:
+ switchLogoHandling: 0
+ switchReleaseVersion: 0
+ switchDisplayVersion: 1.0.0
+ switchStartupUserAccount: 0
+ switchSupportedLanguagesMask: 0
+ switchLogoType: 0
+ switchApplicationErrorCodeCategory:
+ switchUserAccountSaveDataSize: 0
+ switchUserAccountSaveDataJournalSize: 0
+ switchApplicationAttribute: 0
+ switchCardSpecSize: -1
+ switchCardSpecClock: -1
+ switchRatingsMask: 0
+ switchRatingsInt_0: 0
+ switchRatingsInt_1: 0
+ switchRatingsInt_2: 0
+ switchRatingsInt_3: 0
+ switchRatingsInt_4: 0
+ switchRatingsInt_5: 0
+ switchRatingsInt_6: 0
+ switchRatingsInt_7: 0
+ switchRatingsInt_8: 0
+ switchRatingsInt_9: 0
+ switchRatingsInt_10: 0
+ switchRatingsInt_11: 0
+ switchRatingsInt_12: 0
+ switchLocalCommunicationIds_0:
+ switchLocalCommunicationIds_1:
+ switchLocalCommunicationIds_2:
+ switchLocalCommunicationIds_3:
+ switchLocalCommunicationIds_4:
+ switchLocalCommunicationIds_5:
+ switchLocalCommunicationIds_6:
+ switchLocalCommunicationIds_7:
+ switchParentalControl: 0
+ switchAllowsScreenshot: 1
+ switchAllowsVideoCapturing: 1
+ switchAllowsRuntimeAddOnContentInstall: 0
+ switchDataLossConfirmation: 0
+ switchUserAccountLockEnabled: 0
+ switchSystemResourceMemory: 16777216
+ switchSupportedNpadStyles: 22
+ switchNativeFsCacheSize: 32
+ switchIsHoldTypeHorizontal: 1
+ switchSupportedNpadCount: 8
+ switchEnableTouchScreen: 1
+ switchSocketConfigEnabled: 0
+ switchTcpInitialSendBufferSize: 32
+ switchTcpInitialReceiveBufferSize: 64
+ switchTcpAutoSendBufferSizeMax: 256
+ switchTcpAutoReceiveBufferSizeMax: 256
+ switchUdpSendBufferSize: 9
+ switchUdpReceiveBufferSize: 42
+ switchSocketBufferEfficiency: 4
+ switchSocketInitializeEnabled: 1
+ switchNetworkInterfaceManagerInitializeEnabled: 1
+ switchDisableHTCSPlayerConnection: 0
+ switchUseNewStyleFilepaths: 1
+ switchUseLegacyFmodPriorities: 0
+ switchUseMicroSleepForYield: 1
+ switchEnableRamDiskSupport: 0
+ switchMicroSleepForYieldTime: 25
+ switchRamDiskSpaceSize: 12
+ switchUpgradedPlayerSettingsToNMETA: 0
+ ps4NPAgeRating: 12
+ ps4NPTitleSecret:
+ ps4NPTrophyPackPath:
+ ps4ParentalLevel: 11
+ ps4ContentID: ED1633-NPXX51362_00-0000000000000000
+ ps4Category: 0
+ ps4MasterVersion: 01.00
+ ps4AppVersion: 01.00
+ ps4AppType: 0
+ ps4ParamSfxPath:
+ ps4VideoOutPixelFormat: 0
+ ps4VideoOutInitialWidth: 1920
+ ps4VideoOutBaseModeInitialWidth: 1920
+ ps4VideoOutReprojectionRate: 60
+ ps4PronunciationXMLPath:
+ ps4PronunciationSIGPath:
+ ps4BackgroundImagePath:
+ ps4StartupImagePath:
+ ps4StartupImagesFolder:
+ ps4IconImagesFolder:
+ ps4SaveDataImagePath:
+ ps4SdkOverride:
+ ps4BGMPath:
+ ps4ShareFilePath:
+ ps4ShareOverlayImagePath:
+ ps4PrivacyGuardImagePath:
+ ps4ExtraSceSysFile:
+ ps4NPtitleDatPath:
+ ps4RemotePlayKeyAssignment: -1
+ ps4RemotePlayKeyMappingDir:
+ ps4PlayTogetherPlayerCount: 0
+ ps4EnterButtonAssignment: 2
+ ps4ApplicationParam1: 0
+ ps4ApplicationParam2: 0
+ ps4ApplicationParam3: 0
+ ps4ApplicationParam4: 0
+ ps4DownloadDataSize: 0
+ ps4GarlicHeapSize: 2048
+ ps4ProGarlicHeapSize: 2560
+ playerPrefsMaxSize: 32768
+ ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
+ ps4pnSessions: 1
+ ps4pnPresence: 1
+ ps4pnFriends: 1
+ ps4pnGameCustomData: 1
+ playerPrefsSupport: 0
+ enableApplicationExit: 0
+ resetTempFolder: 1
+ restrictedAudioUsageRights: 0
+ ps4UseResolutionFallback: 0
+ ps4ReprojectionSupport: 0
+ ps4UseAudio3dBackend: 0
+ ps4UseLowGarlicFragmentationMode: 1
+ ps4SocialScreenEnabled: 0
+ ps4ScriptOptimizationLevel: 2
+ ps4Audio3dVirtualSpeakerCount: 14
+ ps4attribCpuUsage: 0
+ ps4PatchPkgPath:
+ ps4PatchLatestPkgPath:
+ ps4PatchChangeinfoPath:
+ ps4PatchDayOne: 0
+ ps4attribUserManagement: 0
+ ps4attribMoveSupport: 0
+ ps4attrib3DSupport: 0
+ ps4attribShareSupport: 0
+ ps4attribExclusiveVR: 0
+ ps4disableAutoHideSplash: 0
+ ps4videoRecordingFeaturesUsed: 0
+ ps4contentSearchFeaturesUsed: 0
+ ps4CompatibilityPS5: 0
+ ps4AllowPS5Detection: 0
+ ps4GPU800MHz: 1
+ ps4attribEyeToEyeDistanceSettingVR: 0
+ ps4IncludedModules: []
+ ps4attribVROutputEnabled: 0
+ monoEnv:
+ splashScreenBackgroundSourceLandscape: {fileID: 0}
+ splashScreenBackgroundSourcePortrait: {fileID: 0}
+ blurSplashScreenBackground: 1
+ spritePackerPolicy:
+ webGLMemorySize: 32
+ webGLExceptionSupport: 1
+ webGLNameFilesAsHashes: 0
+ webGLShowDiagnostics: 0
+ webGLDataCaching: 1
+ webGLDebugSymbols: 0
+ webGLEmscriptenArgs:
+ webGLModulesDirectory:
+ webGLTemplate: APPLICATION:Default
+ webGLAnalyzeBuildSize: 0
+ webGLUseEmbeddedResources: 0
+ webGLCompressionFormat: 1
+ webGLWasmArithmeticExceptions: 0
+ webGLLinkerTarget: 1
+ webGLThreadsSupport: 0
+ webGLDecompressionFallback: 0
+ webGLInitialMemorySize: 32
+ webGLMaximumMemorySize: 2048
+ webGLMemoryGrowthMode: 2
+ webGLMemoryLinearGrowthStep: 16
+ webGLMemoryGeometricGrowthStep: 0.2
+ webGLMemoryGeometricGrowthCap: 96
+ webGLEnableWebGPU: 0
+ webGLPowerPreference: 2
+ webGLWebAssemblyTable: 0
+ webGLWebAssemblyBigInt: 0
+ webGLCloseOnQuit: 0
+ webWasm2023: 0
+ scriptingDefineSymbols: {}
+ additionalCompilerArguments: {}
+ platformArchitecture: {}
+ scriptingBackend: {}
+ il2cppCompilerConfiguration: {}
+ il2cppCodeGeneration: {}
+ il2cppStacktraceInformation: {}
+ managedStrippingLevel: {}
+ incrementalIl2cppBuild: {}
+ suppressCommonWarnings: 1
+ allowUnsafeCode: 0
+ useDeterministicCompilation: 1
+ additionalIl2CppArgs:
+ scriptingRuntimeVersion: 1
+ gcIncremental: 1
+ gcWBarrierValidation: 0
+ apiCompatibilityLevelPerPlatform: {}
+ editorAssembliesCompatibilityLevel: 1
+ m_RenderingPath: 1
+ m_MobileRenderingPath: 1
+ metroPackageName: CharacterControllerMovingBodies
+ metroPackageVersion: 1.0.0.0
+ metroCertificatePath:
+ metroCertificatePassword:
+ metroCertificateSubject:
+ metroCertificateIssuer:
+ metroCertificateNotAfter: 0000000000000000
+ metroApplicationDescription: CharacterControllerMovingBodies
+ wsaImages: {}
+ metroTileShortName: CharacterControllerMovingBodies
+ metroTileShowName: 0
+ metroMediumTileShowName: 0
+ metroLargeTileShowName: 0
+ metroWideTileShowName: 0
+ metroSupportStreamingInstall: 0
+ metroLastRequiredScene: 0
+ metroDefaultTileSize: 1
+ metroTileForegroundText: 2
+ metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
+ metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
+ metroSplashScreenUseBackgroundColor: 0
+ syncCapabilities: 0
+ platformCapabilities: {}
+ metroTargetDeviceFamilies: {}
+ metroFTAName:
+ metroFTAFileTypes: []
+ metroProtocolName:
+ vcxProjDefaultLanguage:
+ XboxOneProductId:
+ XboxOneUpdateKey:
+ XboxOneSandboxId:
+ XboxOneContentId:
+ XboxOneTitleId:
+ XboxOneSCId:
+ XboxOneGameOsOverridePath:
+ XboxOnePackagingOverridePath:
+ XboxOneAppManifestOverridePath:
+ XboxOneVersion: 1.0.0.0
+ XboxOnePackageEncryption: 0
+ XboxOnePackageUpdateGranularity: 2
+ XboxOneDescription:
+ XboxOneLanguage:
+ - enus
+ XboxOneCapability: []
+ XboxOneGameRating: {}
+ XboxOneIsContentPackage: 0
+ XboxOneEnhancedXboxCompatibilityMode: 0
+ XboxOneEnableGPUVariability: 1
+ XboxOneSockets: {}
+ XboxOneSplashScreen: {fileID: 0}
+ XboxOneAllowedProductIds: []
+ XboxOnePersistentLocalStorageSize: 0
+ XboxOneXTitleMemory: 8
+ XboxOneOverrideIdentityName:
+ XboxOneOverrideIdentityPublisher:
+ vrEditorSettings: {}
+ cloudServicesEnabled:
+ Purchasing: 0
+ Unity Ads: 0
+ luminIcon:
+ m_Name:
+ m_ModelFolderPath:
+ m_PortalFolderPath:
+ luminCert:
+ m_CertPath:
+ m_SignPackage: 1
+ luminIsChannelApp: 0
+ luminVersion:
+ m_VersionCode: 1
+ m_VersionName:
+ hmiPlayerDataPath:
+ hmiForceSRGBBlit: 0
+ embeddedLinuxEnableGamepadInput: 0
+ hmiCpuConfiguration:
+ hmiLogStartupTiming: 0
+ qnxGraphicConfPath:
+ apiCompatibilityLevel: 6
+ captureStartupLogs: {}
+ activeInputHandler: 0
+ windowsGamepadBackendHint: 0
+ cloudProjectId:
+ framebufferDepthMemorylessMode: 0
+ qualitySettingsNames: []
+ projectName:
+ organizationId:
+ cloudEnabled: 0
+ legacyClampBlendShapeWeights: 0
+ hmiLoadingImage: {fileID: 0}
+ platformRequiresReadableAssets: 0
+ virtualTexturingSupportEnabled: 0
+ insecureHttpOption: 0
+ androidVulkanDenyFilterList: []
+ androidVulkanAllowFilterList: []
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/QualitySettings.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/QualitySettings.asset
new file mode 100644
index 0000000000..8e158d62c6
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/QualitySettings.asset
@@ -0,0 +1,340 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!47 &1
+QualitySettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 5
+ m_CurrentQuality: 5
+ m_QualitySettings:
+ - serializedVersion: 4
+ name: Very Low
+ pixelLightCount: 0
+ shadows: 0
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 15
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ skinWeights: 1
+ globalTextureMipmapLimit: 1
+ textureMipmapLimitSettings: []
+ anisotropicTextures: 0
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ useLegacyDetailDistribution: 0
+ adaptiveVsync: 0
+ vSyncCount: 0
+ realtimeGICPUUsage: 25
+ adaptiveVsyncExtraA: 0
+ adaptiveVsyncExtraB: 0
+ lodBias: 0.3
+ maximumLODLevel: 0
+ enableLODCrossFade: 1
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 4
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ terrainQualityOverrides: 0
+ terrainPixelError: 1
+ terrainDetailDensityScale: 1
+ terrainBasemapDistance: 1000
+ terrainDetailDistance: 80
+ terrainTreeDistance: 5000
+ terrainBillboardStart: 50
+ terrainFadeLength: 5
+ terrainMaxTrees: 50
+ excludedTargetPlatforms: []
+ - serializedVersion: 4
+ name: Low
+ pixelLightCount: 0
+ shadows: 0
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 20
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ skinWeights: 2
+ globalTextureMipmapLimit: 0
+ textureMipmapLimitSettings: []
+ anisotropicTextures: 0
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ useLegacyDetailDistribution: 0
+ adaptiveVsync: 0
+ vSyncCount: 0
+ realtimeGICPUUsage: 25
+ adaptiveVsyncExtraA: 0
+ adaptiveVsyncExtraB: 0
+ lodBias: 0.4
+ maximumLODLevel: 0
+ enableLODCrossFade: 1
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 16
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ terrainQualityOverrides: 0
+ terrainPixelError: 1
+ terrainDetailDensityScale: 1
+ terrainBasemapDistance: 1000
+ terrainDetailDistance: 80
+ terrainTreeDistance: 5000
+ terrainBillboardStart: 50
+ terrainFadeLength: 5
+ terrainMaxTrees: 50
+ excludedTargetPlatforms: []
+ - serializedVersion: 4
+ name: Medium
+ pixelLightCount: 1
+ shadows: 1
+ shadowResolution: 0
+ shadowProjection: 1
+ shadowCascades: 1
+ shadowDistance: 20
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 0
+ skinWeights: 2
+ globalTextureMipmapLimit: 0
+ textureMipmapLimitSettings: []
+ anisotropicTextures: 1
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 0
+ realtimeReflectionProbes: 0
+ billboardsFaceCameraPosition: 0
+ useLegacyDetailDistribution: 0
+ adaptiveVsync: 0
+ vSyncCount: 1
+ realtimeGICPUUsage: 25
+ adaptiveVsyncExtraA: 0
+ adaptiveVsyncExtraB: 0
+ lodBias: 0.7
+ maximumLODLevel: 0
+ enableLODCrossFade: 1
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 64
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ terrainQualityOverrides: 0
+ terrainPixelError: 1
+ terrainDetailDensityScale: 1
+ terrainBasemapDistance: 1000
+ terrainDetailDistance: 80
+ terrainTreeDistance: 5000
+ terrainBillboardStart: 50
+ terrainFadeLength: 5
+ terrainMaxTrees: 50
+ excludedTargetPlatforms: []
+ - serializedVersion: 4
+ name: High
+ pixelLightCount: 2
+ shadows: 2
+ shadowResolution: 1
+ shadowProjection: 1
+ shadowCascades: 2
+ shadowDistance: 40
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ skinWeights: 2
+ globalTextureMipmapLimit: 0
+ textureMipmapLimitSettings: []
+ anisotropicTextures: 1
+ antiAliasing: 0
+ softParticles: 0
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ useLegacyDetailDistribution: 0
+ adaptiveVsync: 0
+ vSyncCount: 1
+ realtimeGICPUUsage: 50
+ adaptiveVsyncExtraA: 0
+ adaptiveVsyncExtraB: 0
+ lodBias: 1
+ maximumLODLevel: 0
+ enableLODCrossFade: 1
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 256
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ terrainQualityOverrides: 0
+ terrainPixelError: 1
+ terrainDetailDensityScale: 1
+ terrainBasemapDistance: 1000
+ terrainDetailDistance: 80
+ terrainTreeDistance: 5000
+ terrainBillboardStart: 50
+ terrainFadeLength: 5
+ terrainMaxTrees: 50
+ excludedTargetPlatforms: []
+ - serializedVersion: 4
+ name: Very High
+ pixelLightCount: 3
+ shadows: 2
+ shadowResolution: 2
+ shadowProjection: 1
+ shadowCascades: 2
+ shadowDistance: 70
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ skinWeights: 4
+ globalTextureMipmapLimit: 0
+ textureMipmapLimitSettings: []
+ anisotropicTextures: 2
+ antiAliasing: 2
+ softParticles: 1
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ useLegacyDetailDistribution: 0
+ adaptiveVsync: 0
+ vSyncCount: 1
+ realtimeGICPUUsage: 50
+ adaptiveVsyncExtraA: 0
+ adaptiveVsyncExtraB: 0
+ lodBias: 1.5
+ maximumLODLevel: 0
+ enableLODCrossFade: 1
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 1024
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ terrainQualityOverrides: 0
+ terrainPixelError: 1
+ terrainDetailDensityScale: 1
+ terrainBasemapDistance: 1000
+ terrainDetailDistance: 80
+ terrainTreeDistance: 5000
+ terrainBillboardStart: 50
+ terrainFadeLength: 5
+ terrainMaxTrees: 50
+ excludedTargetPlatforms: []
+ - serializedVersion: 4
+ name: Ultra
+ pixelLightCount: 4
+ shadows: 2
+ shadowResolution: 2
+ shadowProjection: 1
+ shadowCascades: 4
+ shadowDistance: 150
+ shadowNearPlaneOffset: 3
+ shadowCascade2Split: 0.33333334
+ shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+ shadowmaskMode: 1
+ skinWeights: 255
+ globalTextureMipmapLimit: 0
+ textureMipmapLimitSettings: []
+ anisotropicTextures: 2
+ antiAliasing: 2
+ softParticles: 1
+ softVegetation: 1
+ realtimeReflectionProbes: 1
+ billboardsFaceCameraPosition: 1
+ useLegacyDetailDistribution: 0
+ adaptiveVsync: 0
+ vSyncCount: 1
+ realtimeGICPUUsage: 100
+ adaptiveVsyncExtraA: 0
+ adaptiveVsyncExtraB: 0
+ lodBias: 2
+ maximumLODLevel: 0
+ enableLODCrossFade: 1
+ streamingMipmapsActive: 0
+ streamingMipmapsAddAllCameras: 1
+ streamingMipmapsMemoryBudget: 512
+ streamingMipmapsRenderersPerFrame: 512
+ streamingMipmapsMaxLevelReduction: 2
+ streamingMipmapsMaxFileIORequests: 1024
+ particleRaycastBudget: 4096
+ asyncUploadTimeSlice: 2
+ asyncUploadBufferSize: 16
+ asyncUploadPersistentBuffer: 1
+ resolutionScalingFixedDPIFactor: 1
+ customRenderPipeline: {fileID: 0}
+ terrainQualityOverrides: 0
+ terrainPixelError: 1
+ terrainDetailDensityScale: 1
+ terrainBasemapDistance: 1000
+ terrainDetailDistance: 80
+ terrainTreeDistance: 5000
+ terrainBillboardStart: 50
+ terrainFadeLength: 5
+ terrainMaxTrees: 50
+ excludedTargetPlatforms: []
+ m_TextureMipmapLimitGroupNames: []
+ m_PerPlatformDefaultQuality:
+ Android: 2
+ EmbeddedLinux: 5
+ GameCoreScarlett: 5
+ GameCoreXboxOne: 5
+ LinuxHeadlessSimulation: 5
+ Nintendo Switch: 5
+ PS4: 5
+ PS5: 5
+ QNX: 5
+ ReservedCFE: 5
+ Server: 5
+ Standalone: 5
+ VisionOS: 5
+ WebGL: 3
+ Windows Store Apps: 5
+ XboxOne: 5
+ iPhone: 2
+ tvOS: 2
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/TagManager.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/TagManager.asset
new file mode 100644
index 0000000000..eb5d9aedd6
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/TagManager.asset
@@ -0,0 +1,45 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!78 &1
+TagManager:
+ serializedVersion: 3
+ tags: []
+ layers:
+ - Default
+ - TransparentFX
+ - Ignore Raycast
+ -
+ - Water
+ - UI
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ -
+ m_SortingLayers:
+ - name: Default
+ uniqueID: 0
+ locked: 0
+ m_RenderingLayers:
+ - Default
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/TimeManager.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/TimeManager.asset
new file mode 100644
index 0000000000..8f68da289f
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/TimeManager.asset
@@ -0,0 +1,13 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!5 &1
+TimeManager:
+ m_ObjectHideFlags: 0
+ Fixed Timestep:
+ m_Count: 2822399
+ m_Rate:
+ m_Denominator: 1
+ m_Numerator: 141120000
+ Maximum Allowed Timestep: 0.33333334
+ m_TimeScale: 1
+ Maximum Particle Timestep: 0.03
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/UnityConnectSettings.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/UnityConnectSettings.asset
new file mode 100644
index 0000000000..2d81664be6
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/UnityConnectSettings.asset
@@ -0,0 +1,36 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!310 &1
+UnityConnectSettings:
+ m_ObjectHideFlags: 0
+ serializedVersion: 1
+ m_Enabled: 1
+ m_TestMode: 0
+ m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
+ m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
+ m_ConfigUrl: https://config.uca.cloud.unity3d.com
+ m_DashboardUrl: https://dashboard.unity3d.com
+ m_TestInitMode: 0
+ CrashReportingSettings:
+ m_EventUrl: https://perf-events.cloud.unity3d.com
+ m_Enabled: 0
+ m_LogBufferSize: 10
+ m_CaptureEditorExceptions: 1
+ UnityPurchasingSettings:
+ m_Enabled: 0
+ m_TestMode: 0
+ UnityAnalyticsSettings:
+ m_Enabled: 0
+ m_TestMode: 0
+ m_InitializeOnStartup: 1
+ m_PackageRequiringCoreStatsPresent: 1
+ UnityAdsSettings:
+ m_Enabled: 0
+ m_InitializeOnStartup: 1
+ m_TestMode: 0
+ m_IosGameId:
+ m_AndroidGameId:
+ m_GameIds: {}
+ m_GameId:
+ PerformanceReportingSettings:
+ m_Enabled: 0
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/VFXManager.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/VFXManager.asset
new file mode 100644
index 0000000000..a2a4a97a2f
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/VFXManager.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!937362698 &1
+VFXManager:
+ m_ObjectHideFlags: 0
+ m_IndirectShader: {fileID: 0}
+ m_CopyBufferShader: {fileID: 0}
+ m_SortShader: {fileID: 0}
+ m_StripUpdateShader: {fileID: 0}
+ m_EmptyShader: {fileID: 0}
+ m_RenderPipeSettingsPath:
+ m_FixedTimeStep: 0.016666668
+ m_MaxDeltaTime: 0.05
+ m_MaxScrubTime: 30
+ m_MaxCapacity: 100000000
+ m_CompiledVersion: 0
+ m_RuntimeVersion: 0
+ m_RuntimeResources: {fileID: 0}
+ m_BatchEmptyLifetime: 300
diff --git a/Examples/OverridingScenesAndPrefabs/ProjectSettings/VersionControlSettings.asset b/Examples/OverridingScenesAndPrefabs/ProjectSettings/VersionControlSettings.asset
new file mode 100644
index 0000000000..979fd8eca8
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/ProjectSettings/VersionControlSettings.asset
@@ -0,0 +1,7 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!890905787 &1
+VersionControlSettings:
+ m_ObjectHideFlags: 0
+ m_Mode: Visible Meta Files
+ m_TrackPackagesOutsideProject: 0
diff --git a/Examples/OverridingScenesAndPrefabs/Readme.md b/Examples/OverridingScenesAndPrefabs/Readme.md
new file mode 100644
index 0000000000..f411aae755
--- /dev/null
+++ b/Examples/OverridingScenesAndPrefabs/Readme.md
@@ -0,0 +1,112 @@
+# Netcode for GameObjects
Overriding Scenes and NetworkPrefabs
+
+_Supports using the client-server and distributed authority network topologies._
+
+
+This example, based on the [Netcode for GameObjects Smooth Transform Space Transitions](https://github.com/Unity-Technologies/com.unity.netcode.gameobjects/tree/example/server-client-unique-scenes-and-prefabs/Examples/CharacterControllerMovingBodies), provides and overview of how to use:
+- [`NetworkPrefabHandler`](https://docs.unity3d.com/Packages/com.unity.netcode.gameobjects@2.0/api/Unity.Netcode.NetworkPrefabHandler.html) as a way to dynamically control overriding network prefabs and how they are instantiated.
+ - For this example, the prefab handler is overriding the player prefab.
+ - *You will only see the end result of this portion of the example by running a server instance (i.e. not host) as that will create instances of the ServerPlayer network prefab instead of the ClientPlayer network prefab.*
+- [`NetworkSceneManager.SetClientSynchronizationMode`](https://docs.unity3d.com/Packages/com.unity.netcode.gameobjects@2.0/api/Unity.Netcode.NetworkSceneManager.html#Unity_Netcode_NetworkSceneManager_SetClientSynchronizationMode_UnityEngine_SceneManagement_LoadSceneMode_) to change the default client synchronization mode (SingleMode) to an additive client synchronization mode.
+ - Additive client synchronization mode will prevent already existing preloaded scenes from being unloaded and will use them, as opposed to reloading the same scene, during a client's initial synchronization.
+ - *This is a server-side only setting that gets sent to the clients during the initial synchronization process.*
+- [`NetworkSceneManager.VerifySceneBeforeLoading`](https://docs.unity3d.com/Packages/com.unity.netcode.gameobjects@2.0/api/Unity.Netcode.NetworkSceneManager.html#Unity_Netcode_NetworkSceneManager_VerifySceneBeforeLoading) in order to control what scenes the server will include when sending the synchronization message to newly connecting clients.
+
+## Building The Project
+This example uses unity services. Upon loading the project for the first time, you will want to set your organization and create a new cloud project. This is the only required setting to create stand alone builds for this project.
+
+
+## Terminology
+
+### Shared Scenes
+These are scenes that will be synchronized between a server or session owner and used when a client runs through the initial synchronization process.
+- You can populate these scenes with in-scene placed or dynamically spawned NetworkObjects.
+- These scenes **must be** within the scenes in build list.
+
+### Local Scenes
+These are scenes that are always only local to the application instances (server or client) and will not be synchronized.
+- You should not populate these scenes with NetworkObjects.
+ -However, this example includes one of several ways you can associate a `MonoBehaviour` with a `NetworkBehaviour`.
+- These scenes can be dynamically created, included in the scenes in build list, or be an addressable loaded at some point prior to connecting or while connected to a session.
+
+## Client Synchronization and Scene Validation
+By combining these two scene management features, you can preload scenes:
+- That should not be synchronized and/or are specific to the server or client side of a network session.
+- That you know will be synchronized in order to reduce the client synchronization process.
+
+This approach can be useful if you:
+- Want to have server-side only content that is loaded only on a server.
+- Want to load local scenes for UI purposes or content that you don't need to synchronize.
+ - *This example separates the colliders of the scene geometry from the mesh filters and renderers. Clients are the only instances that load the graphics related scene assets. Both clients and server load a shared scene that contains in-scene placed NetworkObjects and the colliders for the "floor"*
+
+[Read the documentation for more information about client synchronization mode.](https://docs-multiplayer.unity3d.com/netcode/current/basics/scenemanagement/client-synchronization-mode/)
+
+### Note on Distributed Authority
+Since a distributed authority network topology is designed to keep all clients synchronized enough with the SDK level states in order to allow for rapid session owner promotion, the most common design approach (relative to this example) is to have local client scenes and the scenes to be synchronized between clients. However, there could be edge case scenarios where perhaps you only want there to only ever be a single session owner and upon the session owner disconnecting all clients will disconnect themselves too. Under this type of design, it would be valid to have local "server-side" (i.e. session owner) scenes. This example implements this by default for example purposes only. If you want your project to use session owner promotion, then it is highly recommended to only use the have client-side local and shared scenes approach.
+
+## The Bootstrap Loading Process
+
+
+### BootstrapScene
+The first scene loaded. Contains a `NetworkManagerBootstrapper` in-scene placed `GameObject`.
+
+
+#### NetworkManager Bootstrapper (component)
+
+
+Handles the pre-network session menu interface along with connect and disconnect events. Since it is derived from `NetworkManager`, it also defines the network session configuration (i.e. `NetworkConfig`). The `NetworkManagerBootstrapper` in-scene placed `GameObject` gets loaded into the DDOL scene automatically and will persist throughout the application life time. This derived class requires the `SceneBootstrapLoader` component.
+
+#### Scene Bootstrap Loader (component)
+
+
+This component handles preloading scenes for both the client(s) and server. Upon being started, the `NetworkManagerBootstrapper` component will invoke `SceneBootstrapLoader.LoadMainMenu` method that kicks off the scene preloading process.
+- **Default Active Scene Asset:** There is always an active scene. For this example, the default active scene is the same on both the client and server relative properties. *The active scene is always (and should always) be a "shared scene".*
+ - This could represent a lobby or network session main menu (i.e. create or join session).
+ - Both the client and the server preload this scene prior to starting a network session.
+- **Local Scene Assets:** There could be times where you want to load scenes specific to the `NetworkManager` instance type (i.e. client, host, or server).
+ - These scenes are not synchronized by a server (client-server) or session owner (distributed authority).
+ - Having different locally loaded scenes is typically more common in a client-server network topology.
+ - In a distributed authority network topology, it is more common to keep all scenes synchronized but you might want to load non-synchronized scenes (i.e. menu interface for settings etc).
+- **Shared Scene Assets:** These scenes are synchronized by the server or session owner (depending upon network topology used).
+ - This example only provides a server specific set of scene assets to load because you can always add those same scenes to the client-side locally loaded scenes.
+ - If the server synchronizes any scenes from the share scene assets with a client that already has those scene loaded, then those locally loaded scenes on the client side will be used during synchronization.
+ - Depending upon how many scenes you want to synchronize and/or how large one or more scenes are, preloading scenes can reduce synchronization time for clients.
+The `NetworkManagerBootstrapper` uses the `SceneBootstrapLoader` component to start the creation or joining of a network session. The logical flow looks like:
+- `NetworkManagerBootstrapper` invokes `SceneBootstrapLoader.StartSession` when you click one of the (very simple) main menu buttons and passes in the mode/type of `NetworkManager` to start.
+- Based on the `NetworkManager` type being started, the `SceneBootstrapLoader` will then:
+ - Load the default active scene using the `UnityEngine.SceneManagement.SceneManager`.
+ - Load the local scenes using the `UnityEngine.SceneManagement.SceneManager`.
+ - Then it will create or join a network session by either starting the `NetworkManager` or connecting to the sesssion via multiplayer services.
+ - _Server or Session Owner only:_
+ - If any, load the shared (i.e. synchronized) scene assets using the `NetworkSceneManager`
+
+#### Network Prefab Override Handler (component)
+
+
+This `MonoBehaviour` component implements the `INetworkPrefabInstanceHandler` interface and registers with the `NetworkManafer.PrefabHandler` when started. It contains two network prefab properties:
+- Network Prefab: This is the network prefab that you want to override. In this example, it is what is used to spawn a server-side player prefab and is what is defined within the `NetworkManagerBootstrapper` component.
+- Network Prefab Override: This is what is used to spawn a player prefab on the client-side.
+
+At runtime the local `NetworkManager` instance is a client/host or server and will spawn either the ClientPlayer or ServerPlayer prefab. The `NetworkPrefabOverrideHandler` does not need to be a `NetworkBehaviour` and sometimes (especially for overriding the player prefab) it is better to register prefab handlers prior to starting the `NetworkManager`.
+
+## Input Controls
+The following is a list of the input controls used in this project:
+### Clients Only
+- `W,A,S,D`: Movement (forward, backward, turn left, turn right)
+ - *Arrow keys can be used as well.*
+- `SPACE`: Jumps
+- `P`: Enable disable player name and information.
+- `C`: Toggles the player child object movement (continuous or only when the player moves).
+
+### Server Only
+- `[,]`: Right and left bracket keys will follow spawned players.
+- `Backspace`: Stop following a player.
+
+## Example Limitations
+This example is primarily to provide a starting point for anyone interested in exploring how to override (customize) the scene loading and/or prefab instantiation. It does not cover all possible use case scenarios. It is recommended to explore this example, modify it, and read the [Netcode for GameObjects documentation](https://docs-multiplayer.unity3d.com/netcode/current/about/) for more details.
+
+
+
+
+
+
diff --git a/Examples/PingTool/.gitignore b/Examples/PingTool/.gitignore
new file mode 100644
index 0000000000..2800399634
--- /dev/null
+++ b/Examples/PingTool/.gitignore
@@ -0,0 +1,83 @@
+# This .gitignore file should be placed at the root of your Unity project directory
+#
+# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
+#
+/[Ll]ibrary/
+/[Tt]emp/
+/[Oo]bj/
+/[Bb]uild/
+/[Bb]uilds/
+/[Ll]ogs/
+/[Uu]ser[Ss]ettings/
+
+# MemoryCaptures can get excessive in size.
+# They also could contain extremely sensitive data
+/[Mm]emoryCaptures/
+
+# Asset meta data should only be ignored when the corresponding asset is also ignored
+!/[Aa]ssets/**/*.meta
+
+# Uncomment this line if you wish to ignore the asset store tools plugin
+# /[Aa]ssets/AssetStoreTools*
+
+# Autogenerated Jetbrains Rider plugin
+/[Aa]ssets/Plugins/Editor/JetBrains*
+
+# Visual Studio cache directory
+.vs/
+
+# Gradle cache directory
+.gradle/
+
+# Autogenerated VS/MD/Consulo solution and project files
+ExportedObj/
+.consulo/
+*.csproj
+*.unityproj
+*.sln
+*.suo
+*.tmp
+*.user
+*.userprefs
+*.pidb
+*.booproj
+*.svd
+*.pdb
+*.mdb
+*.opendb
+*.VC.db
+
+# Unity3D generated meta files
+*.pidb.meta
+*.pdb.meta
+*.mdb.meta
+
+# Unity3D generated file on crash reports
+sysinfo.txt
+
+# Builds
+*.apk
+*.aab
+*.unitypackage
+
+# Crashlytics generated file
+crashlytics-build.properties
+
+# Packed Addressables
+/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
+
+# Temporary auto-generated Android Assets
+/[Aa]ssets/[Ss]treamingAssets/aa.meta
+/[Aa]ssets/[Ss]treamingAssets/aa/*
+/[Aa]ssets/[Ss]treamingAssets/BuildInfo.json
+/[Aa]ssets/[Ss]treamingAssets/BuildInfo.json.meta
+
+# Secrets
+*.pem
+*.pem.meta
+
+InitTestScene*
+
+boot.config
+SceneTemplateSettings.json
+*BurstAotSettings*.json
diff --git a/Examples/PingTool/Assets/DefaultNetworkPrefabs.asset b/Examples/PingTool/Assets/DefaultNetworkPrefabs.asset
new file mode 100644
index 0000000000..72cef84a6d
--- /dev/null
+++ b/Examples/PingTool/Assets/DefaultNetworkPrefabs.asset
@@ -0,0 +1,31 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: e651dbb3fbac04af2b8f5abf007ddc23, type: 3}
+ m_Name: DefaultNetworkPrefabs
+ m_EditorClassIdentifier:
+ IsDefault: 1
+ List:
+ - Override: 0
+ Prefab: {fileID: 8921789205124766477, guid: 89b57e576a8d47643b2dbd45b1f8cab1, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 4874009706086500699, guid: 3f5e8ae5613c82a4f9f859c11a4f2e09, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
+ - Override: 0
+ Prefab: {fileID: 3439633038736912633, guid: 398aad09d8b2a47eba664a076763cdcc, type: 3}
+ SourcePrefabToOverride: {fileID: 0}
+ SourceHashToOverride: 0
+ OverridingTargetPrefab: {fileID: 0}
diff --git a/Examples/PingTool/Assets/DefaultNetworkPrefabs.asset.meta b/Examples/PingTool/Assets/DefaultNetworkPrefabs.asset.meta
new file mode 100644
index 0000000000..fee27b3ade
--- /dev/null
+++ b/Examples/PingTool/Assets/DefaultNetworkPrefabs.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: aa82390bfdde2564f828b8e5be375282
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/Materials.meta b/Examples/PingTool/Assets/Materials.meta
new file mode 100644
index 0000000000..463de70d61
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d5b7ad71451c27e4291295cfffc10328
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/Materials/ChildLocal.mat b/Examples/PingTool/Assets/Materials/ChildLocal.mat
new file mode 100644
index 0000000000..b6fd2dd9a1
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/ChildLocal.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildLocal
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.8980392, g: 0.039215658, b: 0.7682729, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/PingTool/Assets/Materials/ChildLocal.mat.meta b/Examples/PingTool/Assets/Materials/ChildLocal.mat.meta
new file mode 100644
index 0000000000..35e4d565be
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/ChildLocal.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 45fc555bc05bfee4ab8b0d536799ecee
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/Materials/ChildLocalNoParentSync.mat b/Examples/PingTool/Assets/Materials/ChildLocalNoParentSync.mat
new file mode 100644
index 0000000000..c44172e7a7
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/ChildLocalNoParentSync.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildLocalNoParentSync
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.039215658, g: 0.78592235, b: 0.8980392, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/PingTool/Assets/Materials/ChildLocalNoParentSync.mat.meta b/Examples/PingTool/Assets/Materials/ChildLocalNoParentSync.mat.meta
new file mode 100644
index 0000000000..3a26e43d98
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/ChildLocalNoParentSync.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: affef70511a06dd46b8f52636020af4a
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/Materials/ChildWorld.mat b/Examples/PingTool/Assets/Materials/ChildWorld.mat
new file mode 100644
index 0000000000..0c2bf4b187
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/ChildWorld.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildWorld
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.3783494, g: 0.039215658, b: 0.8980392, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/PingTool/Assets/Materials/ChildWorld.mat.meta b/Examples/PingTool/Assets/Materials/ChildWorld.mat.meta
new file mode 100644
index 0000000000..9a00ded8c6
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/ChildWorld.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 15d0bda12a233964086aee5c0c357e24
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/Materials/ChildWorldNoParentSync.mat b/Examples/PingTool/Assets/Materials/ChildWorldNoParentSync.mat
new file mode 100644
index 0000000000..86b27eb5c9
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/ChildWorldNoParentSync.mat
@@ -0,0 +1,86 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChildWorldNoParentSync
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _ALPHAPREMULTIPLY_ON
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ RenderType: Transparent
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 10
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 3
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 0
+ m_Colors:
+ - _Color: {r: 0.039215658, g: 0.8980392, b: 0.09095798, a: 0.2509804}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/PingTool/Assets/Materials/ChildWorldNoParentSync.mat.meta b/Examples/PingTool/Assets/Materials/ChildWorldNoParentSync.mat.meta
new file mode 100644
index 0000000000..5ab7ff2e72
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/ChildWorldNoParentSync.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a5e199307b2e0894294d9c8bee99a691
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/Materials/Direction.mat b/Examples/PingTool/Assets/Materials/Direction.mat
new file mode 100644
index 0000000000..ed5ed117c3
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/Direction.mat
@@ -0,0 +1,84 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Direction
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 0.8962264, g: 0.52830994, b: 0.038047332, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/PingTool/Assets/Materials/Direction.mat.meta b/Examples/PingTool/Assets/Materials/Direction.mat.meta
new file mode 100644
index 0000000000..c93791fac0
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/Direction.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5324c76c2bab7344badd5ea27a40bcb5
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/Materials/GridPattern.mat b/Examples/PingTool/Assets/Materials/GridPattern.mat
new file mode 100644
index 0000000000..f44981f387
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/GridPattern.mat
@@ -0,0 +1,85 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GridPattern
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords:
+ - _GLOSSYREFLECTIONS_OFF
+ - _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 1
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 6, y: 6}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: a092c5fa8c60ed04aa1d72555f1740bc, type: 3}
+ m_Scale: {x: 6, y: 6}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 0
+ - _Glossiness: 0
+ - _GlossyReflections: 0
+ - _Metallic: 0.785
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 1
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0.254717, g: 0.23188858, b: 0.23188858, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/PingTool/Assets/Materials/GridPattern.mat.meta b/Examples/PingTool/Assets/Materials/GridPattern.mat.meta
new file mode 100644
index 0000000000..cbca0f4485
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/GridPattern.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 42c4a0ad1f9d67a45b12f68697321aad
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/Materials/Ground.mat b/Examples/PingTool/Assets/Materials/Ground.mat
new file mode 100644
index 0000000000..252ea1a0ed
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/Ground.mat
@@ -0,0 +1,79 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Ground
+ m_Shader: {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 0.14769986, g: 0.1509434, b: 0.1473834, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/PingTool/Assets/Materials/Ground.mat.meta b/Examples/PingTool/Assets/Materials/Ground.mat.meta
new file mode 100644
index 0000000000..6dbcac16d3
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/Ground.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9c73b921ea39f4344a19c2d1c7d6b314
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/Materials/PlayerMaterial.mat b/Examples/PingTool/Assets/Materials/PlayerMaterial.mat
new file mode 100644
index 0000000000..e7f5729956
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/PlayerMaterial.mat
@@ -0,0 +1,80 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: PlayerMaterial
+ m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Examples/PingTool/Assets/Materials/PlayerMaterial.mat.meta b/Examples/PingTool/Assets/Materials/PlayerMaterial.mat.meta
new file mode 100644
index 0000000000..1ceca58536
--- /dev/null
+++ b/Examples/PingTool/Assets/Materials/PlayerMaterial.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 44e292334941fe148b997ca2b01b5789
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/PingTool.meta b/Examples/PingTool/Assets/PingTool.meta
new file mode 100644
index 0000000000..ba9359124c
--- /dev/null
+++ b/Examples/PingTool/Assets/PingTool.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ce8d435e959ea9a41b4c776fc31f9550
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Examples/PingTool/Assets/PingTool/NetStateMonitorConfiguration.asset b/Examples/PingTool/Assets/PingTool/NetStateMonitorConfiguration.asset
new file mode 100644
index 0000000000..8748ea24db
--- /dev/null
+++ b/Examples/PingTool/Assets/PingTool/NetStateMonitorConfiguration.asset
@@ -0,0 +1,188 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f51159758cdc14734b2cb6ec1e40e18e, type: 3}
+ m_Name: NetStateMonitorConfiguration
+ m_EditorClassIdentifier:
+ k__BackingField:
+ - k__BackingField: 1
+ k__BackingField: 2
+