├── .github
└── workflows
│ ├── activation.yaml
│ ├── changelog-check.yml
│ └── create-release.yaml
├── .gitignore
├── .vs
└── airconsole-unity-plugin
│ └── xs
│ ├── UserPrefs.xml
│ ├── project-cache
│ ├── Assembly-CSharp-Debug.json
│ └── Assembly-CSharp-Editor-Debug.json
│ └── sqlite3
│ ├── db.lock
│ ├── storage.ide
│ ├── storage.ide-shm
│ └── storage.ide-wal
├── .vsconfig
├── Assets
├── AirConsole.meta
├── AirConsole
│ ├── Documentation for AndroidTV.pdf
│ ├── Documentation for AndroidTV.pdf.meta
│ ├── Documentation_1.7.pdf
│ ├── Documentation_1.7.pdf.meta
│ ├── ProjectCodeUpdater.cs
│ ├── ProjectCodeUpdater.cs.meta
│ ├── README.txt
│ ├── README.txt.meta
│ ├── Royaltyfreemusicclips.com Licence.txt
│ ├── Royaltyfreemusicclips.com Licence.txt.meta
│ ├── Third-Party Notices.txt
│ ├── Third-Party Notices.txt.meta
│ ├── Upgrade_Plugin_Version.md
│ ├── Upgrade_Plugin_Version.md.meta
│ ├── examples.meta
│ ├── examples
│ │ ├── AirConsole.Examples.asmdef
│ │ ├── AirConsole.Examples.asmdef.meta
│ │ ├── basic.meta
│ │ ├── basic
│ │ │ ├── ExampleBasicLogic.cs
│ │ │ ├── ExampleBasicLogic.cs.meta
│ │ │ ├── basic.unity
│ │ │ ├── basic.unity.meta
│ │ │ ├── controller.html
│ │ │ └── controller.html.meta
│ │ ├── game-states.meta
│ │ ├── game-states
│ │ │ ├── GameStatesExampleLogic.cs
│ │ │ ├── GameStatesExampleLogic.cs.meta
│ │ │ ├── controller-game-states.html
│ │ │ ├── controller-game-states.html.meta
│ │ │ ├── game-states.unity
│ │ │ └── game-states.unity.meta
│ │ ├── platformer.meta
│ │ ├── platformer
│ │ │ ├── PlatformerExampleLogic.cs
│ │ │ ├── PlatformerExampleLogic.cs.meta
│ │ │ ├── Player_Platformer.cs
│ │ │ ├── Player_Platformer.cs.meta
│ │ │ ├── platformer-controller.html
│ │ │ ├── platformer-controller.html.meta
│ │ │ ├── platformer.unity
│ │ │ └── platformer.unity.meta
│ │ ├── pong.meta
│ │ ├── pong
│ │ │ ├── ExamplePongLogic.cs
│ │ │ ├── ExamplePongLogic.cs.meta
│ │ │ ├── Racket.cs
│ │ │ ├── Racket.cs.meta
│ │ │ ├── controller.html
│ │ │ ├── controller.html.meta
│ │ │ ├── pong.unity
│ │ │ └── pong.unity.meta
│ │ ├── safe-area.meta
│ │ ├── safe-area
│ │ │ ├── FullscreenSafeAreaHandler.cs
│ │ │ ├── FullscreenSafeAreaHandler.cs.meta
│ │ │ ├── README.md
│ │ │ ├── README.md.meta
│ │ │ ├── SingleCameraExample.unity
│ │ │ ├── SingleCameraExample.unity.meta
│ │ │ ├── SplitScreenCameraExample.unity
│ │ │ ├── SplitScreenCameraExample.unity.meta
│ │ │ ├── SplitScreenSafeAreaHandler.cs
│ │ │ ├── SplitScreenSafeAreaHandler.cs.meta
│ │ │ ├── UISafeAreaHandler.cs
│ │ │ ├── UISafeAreaHandler.cs.meta
│ │ │ ├── safearea-controller.html
│ │ │ └── safearea-controller.html.meta
│ │ ├── swipe.meta
│ │ ├── swipe
│ │ │ ├── Player_Swipe.cs
│ │ │ ├── Player_Swipe.cs.meta
│ │ │ ├── swipe-controller.html
│ │ │ ├── swipe-controller.html.meta
│ │ │ ├── swipe.unity
│ │ │ └── swipe.unity.meta
│ │ ├── translations.meta
│ │ └── translations
│ │ │ ├── TranslationExampleLogic.cs
│ │ │ ├── TranslationExampleLogic.cs.meta
│ │ │ ├── translations-controller.html
│ │ │ ├── translations-controller.html.meta
│ │ │ ├── translations.unity
│ │ │ └── translations.unity.meta
│ ├── extras.meta
│ ├── extras
│ │ ├── HighScoreHelper.cs
│ │ ├── HighScoreHelper.cs.meta
│ │ ├── controller-template.html
│ │ └── controller-template.html.meta
│ ├── plugins.meta
│ ├── plugins
│ │ ├── Android.meta
│ │ ├── Android
│ │ │ ├── unityandroidlibrary.aar
│ │ │ └── unityandroidlibrary.aar.meta
│ │ ├── Newtonsoft.Json.dll
│ │ ├── Newtonsoft.Json.dll.meta
│ │ ├── websocket-sharp.dll
│ │ └── websocket-sharp.dll.meta
│ ├── resources.meta
│ ├── resources
│ │ ├── AirConsoleBg.png
│ │ ├── AirConsoleBg.png.meta
│ │ ├── AirConsoleLogoSmall.png
│ │ ├── AirConsoleLogoSmall.png.meta
│ │ ├── AirConsoleLogoText.png
│ │ ├── AirConsoleLogoText.png.meta
│ │ ├── Art.meta
│ │ ├── Art
│ │ │ ├── Materials.meta
│ │ │ ├── Materials
│ │ │ │ ├── Cube1.mat
│ │ │ │ ├── Cube1.mat.meta
│ │ │ │ ├── Cube2.mat
│ │ │ │ ├── Cube2.mat.meta
│ │ │ │ ├── Green.mat
│ │ │ │ ├── Green.mat.meta
│ │ │ │ ├── ProfilePicturePlane.mat
│ │ │ │ ├── ProfilePicturePlane.mat.meta
│ │ │ │ ├── Sphere 1.mat
│ │ │ │ ├── Sphere 1.mat.meta
│ │ │ │ ├── Sphere.mat
│ │ │ │ ├── Sphere.mat.meta
│ │ │ │ ├── bouncy.physicsMaterial2D
│ │ │ │ ├── bouncy.physicsMaterial2D.meta
│ │ │ │ ├── transparent.mat
│ │ │ │ └── transparent.mat.meta
│ │ │ ├── Meshes.meta
│ │ │ ├── Meshes
│ │ │ │ ├── LogoAirConsole.fbx
│ │ │ │ └── LogoAirConsole.fbx.meta
│ │ │ ├── Sprites.meta
│ │ │ └── Sprites
│ │ │ │ ├── ball.png
│ │ │ │ ├── ball.png.meta
│ │ │ │ ├── player.png
│ │ │ │ └── player.png.meta
│ │ ├── Audio.meta
│ │ ├── Audio
│ │ │ ├── Music.meta
│ │ │ └── Music
│ │ │ │ ├── Happy_1.wav
│ │ │ │ └── Happy_1.wav.meta
│ │ ├── Prefabs.meta
│ │ ├── Prefabs
│ │ │ ├── PlayerCapsule.prefab
│ │ │ └── PlayerCapsule.prefab.meta
│ │ ├── android banner placeholder.jpg
│ │ ├── android banner placeholder.jpg.meta
│ │ ├── androidtv-loadingscreen.png
│ │ └── androidtv-loadingscreen.png.meta
│ ├── scripts.meta
│ └── scripts
│ │ ├── Editor.meta
│ │ ├── Editor
│ │ ├── AirConsole.Editor.asmdef
│ │ ├── AirConsole.Editor.asmdef.meta
│ │ ├── AssemblyInfo.cs
│ │ ├── AssemblyInfo.cs.meta
│ │ ├── Assets.meta
│ │ ├── Assets
│ │ │ ├── AirConsoleIcon.png
│ │ │ └── AirConsoleIcon.png.meta
│ │ ├── BuildAutomation.meta
│ │ ├── BuildAutomation
│ │ │ ├── AndroidGradleProcessor.cs
│ │ │ ├── AndroidGradleProcessor.cs.meta
│ │ │ ├── AndroidManifest.cs
│ │ │ ├── AndroidManifest.cs.meta
│ │ │ ├── AndroidManifestProcessor.cs
│ │ │ ├── AndroidManifestProcessor.cs.meta
│ │ │ ├── AndroidProjectProcessor.cs
│ │ │ ├── AndroidProjectProcessor.cs.meta
│ │ │ ├── AndroidXMLDocument.cs
│ │ │ ├── AndroidXMLDocument.cs.meta
│ │ │ ├── PostBuildProcess.cs
│ │ │ ├── PostBuildProcess.cs.meta
│ │ │ ├── PreBuildProcessing.cs
│ │ │ └── PreBuildProcessing.cs.meta
│ │ ├── Extentions.cs
│ │ ├── Extentions.cs.meta
│ │ ├── Inspector.cs
│ │ ├── Inspector.cs.meta
│ │ ├── PlayMode.cs
│ │ ├── PlayMode.cs.meta
│ │ ├── PluginDevelopment.meta
│ │ ├── PluginDevelopment
│ │ │ ├── BuildHelper.cs
│ │ │ ├── BuildHelper.cs.meta
│ │ │ ├── DevelopmentTools.cs
│ │ │ └── DevelopmentTools.cs.meta
│ │ ├── ProjectMaintenance.meta
│ │ ├── ProjectMaintenance
│ │ │ ├── ProjectConfigurationCheck.cs
│ │ │ ├── ProjectConfigurationCheck.cs.meta
│ │ │ ├── ProjectDependencyCheck.cs
│ │ │ ├── ProjectDependencyCheck.cs.meta
│ │ │ ├── ProjectPreferenceManager.cs
│ │ │ ├── ProjectPreferenceManager.cs.meta
│ │ │ ├── ProjectPreferences.cs
│ │ │ ├── ProjectPreferences.cs.meta
│ │ │ ├── ProjectUpgradeEditor.cs
│ │ │ ├── ProjectUpgradeEditor.cs.meta
│ │ │ ├── SemVerCheck.cs
│ │ │ └── SemVerCheck.cs.meta
│ │ ├── SafeAreaTester.cs
│ │ ├── SafeAreaTester.cs.meta
│ │ ├── SettingWindow.cs
│ │ ├── SettingWindow.cs.meta
│ │ ├── WebListener.cs
│ │ └── WebListener.cs.meta
│ │ ├── Runtime.meta
│ │ ├── Runtime
│ │ ├── AirConsole.Runtime.asmdef
│ │ ├── AirConsole.Runtime.asmdef.meta
│ │ ├── AirConsole.cs
│ │ ├── AirConsole.cs.meta
│ │ ├── AirConsoleLogger.cs
│ │ ├── AirConsoleLogger.cs.meta
│ │ ├── AssemblyInfo.cs
│ │ ├── AssemblyInfo.cs.meta
│ │ ├── DebugLevel.cs
│ │ ├── DebugLevel.cs.meta
│ │ ├── Plugin.meta
│ │ ├── Plugin
│ │ │ ├── Android.meta
│ │ │ └── Android
│ │ │ │ ├── AndroidUnityUtils.cs
│ │ │ │ ├── AndroidUnityUtils.cs.meta
│ │ │ │ ├── GenericUnityPluginCallback.cs
│ │ │ │ ├── GenericUnityPluginCallback.cs.meta
│ │ │ │ ├── PluginManager.cs
│ │ │ │ ├── PluginManager.cs.meta
│ │ │ │ ├── UnityAndroidObjectProvider.cs
│ │ │ │ ├── UnityAndroidObjectProvider.cs.meta
│ │ │ │ ├── UnityPluginExecutionCallback.cs
│ │ │ │ ├── UnityPluginExecutionCallback.cs.meta
│ │ │ │ ├── UnityPluginStringCallback.cs
│ │ │ │ └── UnityPluginStringCallback.cs.meta
│ │ ├── RuntimeConfiguration.meta
│ │ ├── RuntimeConfiguration
│ │ │ ├── AndroidRuntimeConfigurator.cs
│ │ │ ├── AndroidRuntimeConfigurator.cs.meta
│ │ │ ├── EditorRuntimeConfigurator.cs
│ │ │ ├── EditorRuntimeConfigurator.cs.meta
│ │ │ ├── IRuntimeConfigurator.cs
│ │ │ ├── IRuntimeConfigurator.cs.meta
│ │ │ ├── WebGLRuntimeConfigurator.cs
│ │ │ └── WebGLRuntimeConfigurator.cs.meta
│ │ ├── Settings.cs
│ │ ├── Settings.cs.meta
│ │ ├── WebViewManager.cs
│ │ ├── WebViewManager.cs.meta
│ │ ├── WebsocketListener.cs
│ │ └── WebsocketListener.cs.meta
│ │ ├── SupportCheck.meta
│ │ ├── SupportCheck
│ │ ├── AirConsole.SupportCheck.asmdef
│ │ ├── AirConsole.SupportCheck.asmdef.meta
│ │ ├── UnityVersionNotSupported.cs
│ │ └── UnityVersionNotSupported.cs.meta
│ │ ├── Tests.meta
│ │ └── Tests
│ │ ├── EditMode.meta
│ │ ├── EditMode
│ │ ├── AirConsole.EditMode.Tests.asmdef
│ │ ├── AirConsole.EditMode.Tests.asmdef.meta
│ │ ├── AirConsoleTests.cs
│ │ └── AirConsoleTests.cs.meta
│ │ ├── Editor.meta
│ │ ├── Editor
│ │ ├── AirConsole.Editor.Tests.asmdef
│ │ ├── AirConsole.Editor.Tests.asmdef.meta
│ │ ├── ProjectDependencyCheckTests.cs
│ │ └── ProjectDependencyCheckTests.cs.meta
│ │ ├── PlayMode.meta
│ │ └── PlayMode
│ │ ├── AirConsole.PlayMode.Tests.asmdef
│ │ └── AirConsole.PlayMode.Tests.asmdef.meta
├── Packager.meta
├── Packager
│ ├── Editor.meta
│ └── Editor
│ │ ├── Packager.cs
│ │ └── Packager.cs.meta
├── WebGLTemplates.meta
└── WebGLTemplates
│ ├── AirConsole-2020.meta
│ ├── AirConsole-2020
│ ├── TemplateData.meta
│ ├── TemplateData
│ │ ├── loading-screen.png
│ │ └── loading-screen.png.meta
│ ├── airconsole-settings.js.meta
│ ├── airconsole-unity-plugin.js
│ ├── airconsole-unity-plugin.js.meta
│ ├── index.html
│ ├── index.html.meta
│ ├── thumbnail.png
│ └── thumbnail.png.meta
│ ├── AirConsole-U6.meta
│ └── AirConsole-U6
│ ├── TemplateData.meta
│ ├── TemplateData
│ ├── loading-screen.png
│ └── loading-screen.png.meta
│ ├── airconsole-settings.js.meta
│ ├── airconsole-unity-plugin.js
│ ├── airconsole-unity-plugin.js.meta
│ ├── index.html
│ ├── index.html.meta
│ ├── thumbnail.png
│ └── thumbnail.png.meta
├── Builds
└── airconsole-unity-plugin-v2.6.1.unitypackage
├── CHANGELOG.md
├── LICENSE
├── Packages
├── manifest.json
└── packages-lock.json
├── ProjectSettings
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── MemorySettings.asset
├── NavMeshAreas.asset
├── NetworkManager.asset
├── PackageManagerSettings.asset
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── SceneTemplateSettings.json
├── TagManager.asset
├── TimeManager.asset
├── UnityConnectSettings.asset
├── VFXManager.asset
├── VersionControlSettings.asset
└── XRSettings.asset
└── README.md
/.github/workflows/activation.yaml:
--------------------------------------------------------------------------------
1 | name: Acquire activation file
2 | on:
3 | workflow_dispatch: {}
4 | jobs:
5 | activation:
6 | name: Request manual activation file 🔑
7 | runs-on: ubuntu-latest
8 | steps:
9 | # Request manual activation file
10 | - name: Request manual activation file
11 | id: getManualLicenseFile
12 | uses: game-ci/unity-request-activation-file@v2
13 | # Upload artifact (Unity_v20XX.X.XXXX.alf)
14 | - name: Expose as artifact
15 | uses: actions/upload-artifact@v2
16 | with:
17 | name: ${{ steps.getManualLicenseFile.outputs.filePath }}
18 | path: ${{ steps.getManualLicenseFile.outputs.filePath }}
--------------------------------------------------------------------------------
/.github/workflows/changelog-check.yml:
--------------------------------------------------------------------------------
1 | name: CHANGELOG.md updated
2 |
3 | on:
4 | pull_request:
5 | types: [opened, synchronize, reopened]
6 |
7 | jobs:
8 | changelog:
9 | runs-on: ubuntu-latest
10 | steps:
11 | - name: Checkout code
12 | uses: actions/checkout@v4
13 | with:
14 | ref: ${{ github.event.pull_request.head.sha }}
15 | fetch-depth: 0
16 |
17 | - name: Check for changelog skip intention
18 | id: asset_check
19 | run: |
20 | git fetch origin ${{ github.base_ref }}
21 | SKIP=0
22 | LAST_COMMIT_MESSAGE=$(git log -1 --format=%B HEAD)
23 | echo "Last commit message: $LAST_COMMIT_MESSAGE"
24 | if printf '%s\n' "$LAST_COMMIT_MESSAGE" | grep -qi '#skip-changelog'; then
25 | SKIP=1
26 | fi
27 | MATCHED=0
28 | if [ "$SKIP" -ne 1 ]; then
29 | CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }} HEAD)
30 | echo "Changed files: $CHANGED_FILES"
31 | for f in $CHANGED_FILES; do
32 | if [[ "$f" == Assets/AirConsole/* ]] || [[ "$f" == Assets/WebGLTemplates/* ]]; then
33 | MATCHED=1
34 | break
35 | fi
36 | done
37 | fi
38 | echo "matched=$MATCHED" >> $GITHUB_OUTPUT
39 | echo "skip=$SKIP" >> $GITHUB_OUTPUT
40 | shell: bash
41 |
42 | - name: Check if CHANGELOG.md was updated
43 | if: steps.asset_check.outputs.matched == '1' && steps.asset_check.outputs.skip != '1'
44 | run: |
45 | git fetch origin ${{ github.base_ref }}
46 | CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }} HEAD)
47 | if ! echo "$CHANGED_FILES" | grep -q '^CHANGELOG.md$'; then
48 | echo "ERROR: CHANGELOG.md was not updated in this PR. Please update it to reflect your changes."
49 | exit 1
50 | fi
51 | shell: bash
52 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # =============== #
2 | # Unity generated #
3 | # =============== #
4 | Temp/
5 | /Library/
6 | Logs/
7 | Temp/
8 | UserSettings/
9 | AssetStoreTools/
10 | AssetStoreTools.*
11 |
12 | # ===================================== #
13 | # Visual Studio / MonoDevelop generated #
14 | # ===================================== #
15 | ExportedObj/
16 | obj/
17 | *.svd
18 | *.userprefs
19 | *.csproj
20 | *.pidb
21 | *.suo
22 | *.sln
23 | *.user
24 | *.unityproj
25 | *.booproj
26 |
27 | # ============ #
28 | # OS generated #
29 | # ============ #
30 | .DS_Store
31 | .DS_Store?
32 | ._*
33 | .Spotlight-V100
34 | .Trashes
35 | ehthumbs.db
36 | Thumbs.db
37 |
38 | # ============ #
39 | # IDEA generated #
40 | # ============ #
41 | /.idea
42 |
43 |
44 | # ============ #
45 | # Visual Studio Code generated #
46 | # ============ #
47 | /.vs
48 | .utmp
49 | TestBuilds/
50 | Assets/AirConsole/airconsole.prefs*
51 |
52 | Assets/WebGLTemplates/**/airconsole-settings.js
53 |
--------------------------------------------------------------------------------
/.vs/airconsole-unity-plugin/xs/UserPrefs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/.vs/airconsole-unity-plugin/xs/sqlite3/db.lock:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/.vs/airconsole-unity-plugin/xs/sqlite3/db.lock
--------------------------------------------------------------------------------
/.vs/airconsole-unity-plugin/xs/sqlite3/storage.ide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/.vs/airconsole-unity-plugin/xs/sqlite3/storage.ide
--------------------------------------------------------------------------------
/.vs/airconsole-unity-plugin/xs/sqlite3/storage.ide-shm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/.vs/airconsole-unity-plugin/xs/sqlite3/storage.ide-shm
--------------------------------------------------------------------------------
/.vs/airconsole-unity-plugin/xs/sqlite3/storage.ide-wal:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/.vs/airconsole-unity-plugin/xs/sqlite3/storage.ide-wal
--------------------------------------------------------------------------------
/.vsconfig:
--------------------------------------------------------------------------------
1 | {
2 | "version": "1.0",
3 | "components": [
4 | "Microsoft.VisualStudio.Workload.ManagedGame"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/Assets/AirConsole.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 07cefb6a9868344dbb6ccfb556f1117e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/Documentation for AndroidTV.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/Documentation for AndroidTV.pdf
--------------------------------------------------------------------------------
/Assets/AirConsole/Documentation for AndroidTV.pdf.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 98c91a57543cf43e9a4f31d3d1f16abc
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/Documentation_1.7.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/Documentation_1.7.pdf
--------------------------------------------------------------------------------
/Assets/AirConsole/Documentation_1.7.pdf.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6952db28ad1934cb59d4f40e6f874ac0
3 | timeCreated: 1464704989
4 | licenseType: Pro
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/ProjectCodeUpdater.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE && UNITY_EDITOR && UNITY_2022_3_OR_NEWER
2 | namespace NDream.Unity {
3 | using System.IO;
4 | using UnityEditor;
5 | using UnityEditor.Build;
6 | using UnityEngine;
7 |
8 | ///
9 | /// This is responsible to guide developers through the possible steps for a project upgrade to 2.6.0.
10 | ///
11 | public abstract class ProjectCodeUpdater {
12 | public static string CodePackagePath {
13 | get => Path.GetFullPath(Path.Combine(Application.dataPath, "AirConsole", "airconsole-code.unitypackage"));
14 | }
15 |
16 | [InitializeOnLoadMethod]
17 | public static void ValidateProjectForImport() {
18 | bool isInPluginProject =
19 | File.Exists(Path.GetFullPath(Path.Combine(Application.dataPath, "Packager", "Editor", "Packager.cs")));
20 | if (isInPluginProject) {
21 | return;
22 | }
23 |
24 | ImportCodePackage();
25 | EditorUtility.DisplayDialog("Success", "The AirConsole Plugin has been successfully imported", "ok");
26 | }
27 |
28 | private static void ImportCodePackage() {
29 | if (File.Exists(CodePackagePath)) {
30 | // In 2.6.0, this was moved to Assets/AirConsole/scripts/Editor/Assets/AirConsoleIcon.png with editor icon focused import settings.
31 | AssetDatabase.DeleteAsset("Assets/AirConsole/resources/AirConsoleLogo.png");
32 |
33 | AssetDatabase.DeleteAsset("Assets/AirConsole/examples");
34 | AssetDatabase.DeleteAsset("Assets/AirConsole/scripts");
35 | AssetDatabase.DeleteAsset("Assets/AirConsole/unity-webview");
36 | AssetDatabase.Refresh();
37 |
38 | // Because the AssetDatabase refresh happens asynchronously at the end of the editor loop, we must use delayedCall to
39 | // execute the package import. Otherwise, files like AirConsole.cs that must be imported in the 'scripts/Runtime' directory
40 | // would be located outside and break compilation.
41 | // Without this, AirConsole.cs would be imported in Assets/AirConsole/scripts instead of Assets/AirConsole/scripts/Runtime.
42 | EditorApplication.delayCall += () => ExecuteCodePackageImport();
43 | } else {
44 | AssetDatabase.DeleteAsset($"Assets/AirConsole/{nameof(ProjectCodeUpdater)}.cs");
45 | }
46 | }
47 |
48 | private static void ExecuteCodePackageImport() {
49 | AssetDatabase.ImportPackage(CodePackagePath, false);
50 | AssetDatabase.DeleteAsset($"Assets/AirConsole/{nameof(ProjectCodeUpdater)}.cs");
51 | AssetDatabase.DeleteAsset(CodePackagePath.Replace(Application.dataPath, "Assets"));
52 | }
53 | }
54 | }
55 | #endif
56 |
--------------------------------------------------------------------------------
/Assets/AirConsole/ProjectCodeUpdater.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fa1b8baa7e9d643089a8f449ec0db946
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AirConsole/README.txt:
--------------------------------------------------------------------------------
1 | # Info
2 | ------------------------
3 | The AirConsole-Unity-Plugin is a C# wrapper for the AirConsole Javascript API.
4 | AirConsole provides a simple to use Javascript API for game developers to build
5 | their own local multiplayer realtime browser games.
6 | You can find the Javascript API documentation here: http://developers.airconsole.com/#/api
7 |
8 | IMPORTANT: The plugin comes with an embedded webserver / websocket-server for the communication between the AirConsole backend and the Unity-Editor.
9 | You don't need to install any other webserver or services.
10 |
11 | # Documentation
12 | ------------------------
13 | All install instructions and examples are documented in the file "Documentation_1.7.0.pdf" inside this folder.
14 | There are more examples on the website: http://developers.airconsole.com/#/guides
15 |
16 | # Platforms
17 | ------------------------
18 | Since the AirConsole is working with HTML5 and Javascript, you can only make use of this
19 | plugin when you switch your target build to WebGL.
20 |
21 | # Support
22 | ------------------------
23 | If you need support, please visit: http://developers.airconsole.com/#/help
--------------------------------------------------------------------------------
/Assets/AirConsole/README.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d6c3b78438bdca145a9b6283728943bb
3 | timeCreated: 1439513343
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/Royaltyfreemusicclips.com Licence.txt:
--------------------------------------------------------------------------------
1 | You can download and use these free music loops and full length music clips in any commercial multimedia project but you cannot:
2 | • re-sell individually or as a collection or as a ringtone
3 | • post on a website for download as we are doing here
4 | • mix into your own music and then redistribute it as your own.
5 |
6 | You may use these music loops in a Youtube video, Flash animation or in any other commercial multimedia presentation including TV and Film.
7 |
8 | In return for the use of these free royalty free music loops we only ask that you please give Partners In Rhyme a link on your website or blog, a credit in your Youtube video, or just a nice email saying "Thanks!".
--------------------------------------------------------------------------------
/Assets/AirConsole/Royaltyfreemusicclips.com Licence.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c81da0fad3643477195ce29f20b2bdaa
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/Third-Party Notices.txt:
--------------------------------------------------------------------------------
1 | Happy_1.wav is under the Royaltyfreemusicclips.com Licence.txt licence.
--------------------------------------------------------------------------------
/Assets/AirConsole/Third-Party Notices.txt.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a5582f43d978843619f1ea79d7f7b451
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/Upgrade_Plugin_Version.md:
--------------------------------------------------------------------------------
1 |
2 | # Upgrade the Unity Plugin to the current version
3 |
4 | ## Upgrading from v2.14- to v2.5.0
5 |
6 | 1. The content of airconsole-unity-plugin.js has changed.
7 | You need to copy the correct version from `WebGLTemplates/AirConsole` for Unity 2019 and below or `WebGLTemplates/AirConsole-2020` for Unity 2020+ to the WebGLTemplate folder you use.
8 |
9 | 2. The content of the index.html / screen.html has changed.
10 | Open your controller's html file as well as the index.html in your WebGL template and search for `` and replace it with ``, otherwise neither Translations nor Player Silencing will work.
11 |
12 | 3. The version of the airconsole api has changed.
13 | Search for a script usage like `` and replace it with ``
14 |
15 | 4. Ensure that obsolete API devices, device_id and server_time_offset are updated:
16 | 1. Replace AirConsole.instance.devices with AirConsole.instance.Devices
17 | 2. Replace AirConsole.instance.device_id with AirConsole.instance.GetDeviceId()
18 | 3. Replace AirConsole.instance.server_time_offset with AirConsole.instance.GetServerTime()
19 |
20 | ## Upgrading from v2.11 to v2.12+
21 |
22 | The location of the Webview has changed in this release.
23 |
24 | When upgrading from v2.11 and before, you need manually remove the old Webview plugin parts:
25 |
26 | - `Assets/AirConsole/plugins/WebViewObject.cs`
27 | - `Assets/AirConsole/plugins/Editor/UnityWebViewPostprocessBuild.cs`
28 | - `Assets/AirConsole/plugins/WebView.bundle`
29 | - `Assets/AirConsole/plugins/WebViewSeparated.bundle`
30 | - `Assets/AirConsole/plugins/Anrdoid/WebViewPlugin.jar`
31 | - `Assets/AirConsole/plugins/iOS/WebView.mm`
32 | - `Assets/AirConsole/plugins/X86_64/WebView.bundle`
33 |
34 | ## Upgrading from older versions to v2.11+
35 |
36 | With v2.11, the `AirConsole.instance.OnMute` event was removed and the AirConsole platform stopped invoking it for older projects in July 2023.
37 | When upgrading you need to update your event handlers for `AirConsole.instance.OnAdShow` and `AirConsole.instance.OnAdComplete` to take care of muting the game.
--------------------------------------------------------------------------------
/Assets/AirConsole/Upgrade_Plugin_Version.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9ab037fe1fbc49358d2aea7a298cf242
3 | timeCreated: 1716970974
--------------------------------------------------------------------------------
/Assets/AirConsole/examples.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4d7ef0dc61a8514469de3fac63d0283c
3 | folderAsset: yes
4 | timeCreated: 1435580098
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/AirConsole.Examples.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AirConsole.Examples",
3 | "rootNamespace": "NDream.AirConsole.Examples",
4 | "references": [
5 | "AirConsole.Runtime"
6 | ],
7 | "includePlatforms": [
8 | "Android",
9 | "Editor",
10 | "WebGL"
11 | ],
12 | "excludePlatforms": [],
13 | "allowUnsafeCode": false,
14 | "overrideReferences": true,
15 | "precompiledReferences": [
16 | "Newtonsoft.Json.dll"
17 | ],
18 | "autoReferenced": true,
19 | "defineConstraints": [
20 | "UNITY_2022_3_OR_NEWER"
21 | ],
22 | "versionDefines": [],
23 | "noEngineReferences": false
24 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/AirConsole.Examples.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b55c9766b0114488ebd1267077bb0e86
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/basic.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bba32ebfce3c2b84b85c2e975fc45151
3 | folderAsset: yes
4 | timeCreated: 1437829405
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/basic/ExampleBasicLogic.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a09fc15aab397884e853f9d135e4f2c8
3 | timeCreated: 1435585733
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/basic/basic.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: be2892f0848650f4fa6714ec6d9100bf
3 | timeCreated: 1435580098
4 | licenseType: Store
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/basic/controller.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 24d0ea9f52a200b479f21be5710f94ac
3 | timeCreated: 1437829347
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/game-states.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 44bbbb8bdaad946e3907352b007a2073
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/game-states/GameStatesExampleLogic.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 158e35e407c154484841b256d8915cc7
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/game-states/controller-game-states.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c4a33a98dbad440d98fc8f9e7062d62c
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/game-states/game-states.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0e5f4cea225b44e8290563cbebbb6a5c
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/platformer.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0db6b1d7257f64bf3a9202ed90ae8d92
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/platformer/PlatformerExampleLogic.cs:
--------------------------------------------------------------------------------
1 | namespace NDream.AirConsole.Examples {
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 | using Newtonsoft.Json.Linq;
5 |
6 | public class PlatformerExampleLogic : MonoBehaviour {
7 | public GameObject playerPrefab;
8 |
9 | #if !DISABLE_AIRCONSOLE
10 | private Dictionary players = new();
11 |
12 | private void Awake() {
13 | AirConsole.instance.onMessage += OnMessage;
14 | AirConsole.instance.onReady += OnReady;
15 | AirConsole.instance.onConnect += OnConnect;
16 | }
17 |
18 | private void OnReady(string code) {
19 | //Since people might be coming to the game from the AirConsole store once the game is live,
20 | //I have to check for already connected devices here and cannot rely only on the OnConnect event
21 | List connectedDevices = AirConsole.instance.GetControllerDeviceIds();
22 | foreach (int deviceID in connectedDevices) {
23 | AddNewPlayer(deviceID);
24 | }
25 | }
26 |
27 | private void OnConnect(int device) {
28 | AddNewPlayer(device);
29 | }
30 |
31 | private void AddNewPlayer(int deviceID) {
32 | if (players.ContainsKey(deviceID)) {
33 | return;
34 | }
35 |
36 | //Instantiate player prefab, store device id + player script in a dictionary
37 | GameObject newPlayer = Instantiate(playerPrefab, transform.position, transform.rotation) as GameObject;
38 | players.Add(deviceID, newPlayer.GetComponent());
39 | }
40 |
41 | private void OnMessage(int from, JToken data) {
42 | Debug.Log("message: " + data);
43 |
44 | //When I get a message, I check if it's from any of the devices stored in my device Id dictionary
45 | if (players.ContainsKey(from) && data["action"] != null) {
46 | //I forward the command to the relevant player script, assigned by device ID
47 | players[from].ButtonInput(data["action"].ToString());
48 | }
49 | }
50 |
51 | private void OnDestroy() {
52 | if (AirConsole.instance != null) {
53 | AirConsole.instance.onMessage -= OnMessage;
54 | AirConsole.instance.onReady -= OnReady;
55 | AirConsole.instance.onConnect -= OnConnect;
56 | }
57 | }
58 | #endif
59 | }
60 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/platformer/PlatformerExampleLogic.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ca421917d12344192a0e312fbfdfecf9
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/platformer/Player_Platformer.cs:
--------------------------------------------------------------------------------
1 | namespace NDream.AirConsole.Examples {
2 | using UnityEngine;
3 |
4 | public class Player_Platformer : MonoBehaviour {
5 | private Rigidbody rigidBody;
6 |
7 | private bool movingLeft;
8 | private bool movingRight;
9 |
10 | private float playerSpeed = 0.1f;
11 | private float jumpForce = 350f;
12 |
13 | private bool isInSphere;
14 | #if !DISABLE_AIRCONSOLE
15 | private void Start() {
16 | rigidBody = GetComponent();
17 | }
18 |
19 | public void ButtonInput(string input) {
20 | switch (input) {
21 | case "right":
22 | movingRight = true;
23 | break;
24 | case "left":
25 | movingLeft = true;
26 | break;
27 | case "right-up":
28 | movingRight = false;
29 | break;
30 | case "left-up":
31 | movingLeft = false;
32 | break;
33 | case "jump":
34 | rigidBody.AddForce(transform.up * jumpForce);
35 | break;
36 | case "interact":
37 | if (isInSphere) {
38 | if (Camera.main.backgroundColor == Color.yellow) {
39 | Camera.main.backgroundColor = Color.blue;
40 | } else {
41 | Camera.main.backgroundColor = Color.yellow;
42 | }
43 | }
44 |
45 | break;
46 | }
47 | }
48 |
49 | private void FixedUpdate() {
50 | if (movingLeft && !movingRight) {
51 | rigidBody.MovePosition(rigidBody.position + new Vector3(-playerSpeed, 0, 0));
52 | } else if (!movingLeft && movingRight) {
53 | rigidBody.MovePosition(rigidBody.position + new Vector3(playerSpeed, 0, 0));
54 | }
55 | }
56 |
57 | //Track if the player capsule is currently inside the transparent sphere or not
58 | private void OnTriggerEnter(Collider trigger) {
59 | if (trigger.tag == "PlatformSphere") {
60 | isInSphere = true;
61 | }
62 | }
63 |
64 | private void OnTriggerExit(Collider trigger) {
65 | if (trigger.tag == "PlatformSphere") {
66 | isInSphere = false;
67 | }
68 | }
69 | #endif
70 | }
71 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/platformer/Player_Platformer.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fc5d0864cc8934039b036f722f168be7
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/platformer/platformer-controller.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
61 |
62 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/platformer/platformer-controller.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ab5a57d187e074ea3b7285d1c90e187d
3 | timeCreated: 1437829347
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/platformer/platformer.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d1c6c76d1e441496eb198de3564ddb56
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/pong.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d992ee17fabc2214c9048fa291018566
3 | folderAsset: yes
4 | timeCreated: 1437829423
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/pong/ExamplePongLogic.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dd5f195900113e741b6db1dcbe563753
3 | timeCreated: 1437923339
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/pong/Racket.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace NDream.AirConsole.Examples {
4 | public class Racket : MonoBehaviour {
5 |
6 | public ExamplePongLogic logic;
7 |
8 | // Use this for initialization
9 | void Start() { }
10 |
11 | void OnCollisionEnter2D(Collision2D col) {
12 |
13 | if (col.gameObject.GetComponent() != null) {
14 |
15 | float hitPos = (col.transform.position.y - transform.position.y) / (GetComponent().bounds.size.y / 2);
16 | float hitDir = 1f;
17 |
18 | if (col.relativeVelocity.x > 0) {
19 | hitDir = -1f;
20 | }
21 |
22 | Vector2 dir = new Vector2(hitDir, hitPos).normalized;
23 | col.gameObject.GetComponent().velocity = dir * logic.ballSpeed;
24 |
25 | }
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/pong/Racket.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e32b9a5d4a7fdf94a9b04655ee10491e
3 | timeCreated: 1437927115
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/pong/controller.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8fc8a37abcbfc124e97a1c0e445d061f
3 | timeCreated: 1437923238
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/pong/pong.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 008d7c2791f9bf44cb399bc2ec4b3f84
3 | timeCreated: 1437923230
4 | licenseType: Store
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f08e6e6ff5a1ba3498fbc3d11bf4bcae
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/FullscreenSafeAreaHandler.cs:
--------------------------------------------------------------------------------
1 | namespace NDream.AirConsole.Examples {
2 | using UnityEngine;
3 | using NDream.AirConsole;
4 |
5 | ///
6 | /// Example script for handling SafeArea changes with a single fullscreen camera.
7 | /// This is the simplest implementation that adjusts the main camera to fit within the safe area.
8 | ///
9 | [RequireComponent(typeof(Camera))]
10 | public class FullscreenSafeAreaHandler : MonoBehaviour {
11 | [Tooltip("Reference to the camera that should be adjusted to the safe area. Will use the attached camera if not assigned.")]
12 | [SerializeField]
13 | private Camera targetCamera;
14 |
15 | #if !DISABLE_AIRCONSOLE
16 | private void Awake() {
17 | if (!targetCamera) {
18 | targetCamera = GetComponent();
19 | }
20 |
21 | HandleSafeAreaChanged(AirConsole.instance.SafeArea);
22 | AirConsole.instance.onReady += Setup;
23 | }
24 |
25 | private void Setup(string code) {
26 | if (AirConsole.instance && AirConsole.instance.IsAirConsoleUnityPluginReady()) {
27 | if (AirConsole.instance.SafeArea.width > 0) {
28 | HandleSafeAreaChanged(AirConsole.instance.SafeArea);
29 | }
30 |
31 | AirConsole.instance.OnSafeAreaChanged += HandleSafeAreaChanged;
32 |
33 | Debug.Log("FullscreenSafeAreaHandler: Subscribed to OnSafeAreaChanged events");
34 | } else {
35 | Debug.LogWarning("AirConsole is not ready. Safe area handling won't work correctly.");
36 | }
37 | }
38 |
39 | ///
40 | /// Handles changes to the safe area by adjusting the camera's pixel rect.
41 | ///
42 | /// The new safe area rectangle in pixel coordinates
43 | private void HandleSafeAreaChanged(Rect newSafeArea) {
44 | if (targetCamera) {
45 | targetCamera.pixelRect = newSafeArea;
46 | Debug.Log($"Camera adjusted to safe area: {newSafeArea}");
47 | }
48 | }
49 |
50 | private void OnEnable() {
51 | if (AirConsole.instance) {
52 | AirConsole.instance.OnSafeAreaChanged -= HandleSafeAreaChanged;
53 | AirConsole.instance.OnSafeAreaChanged += HandleSafeAreaChanged;
54 | }
55 | }
56 |
57 | private void OnDisable() {
58 | if (AirConsole.instance) {
59 | AirConsole.instance.OnSafeAreaChanged -= HandleSafeAreaChanged;
60 | }
61 | }
62 | #endif
63 | }
64 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/FullscreenSafeAreaHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a1b5c6dd8de3e4b4fafb3c384af7e1d2
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/README.md:
--------------------------------------------------------------------------------
1 | # Safe Area Examples
2 |
3 | This directory contains example implementations for the AirConsole SafeArea feature. The SafeArea feature allows your game to adapt to different screen configurations by providing a safe rectangle where content should be displayed.
4 |
5 | ## Overview
6 |
7 | The examples demonstrate how to handle the `OnSafeAreaChanged` event and use the `SafeArea` property from the AirConsole instance to properly adjust cameras and UI elements for optimal display across different platforms.
8 |
9 | ## Prerequisites
10 |
11 | To use these examples:
12 |
13 | 1. Enable the `Native Game Sizing` checkbox in the AirConsole component inspector
14 | 2. Make sure your game is using AirConsole version 2.6.0 or newer
15 | 3. For proper testing in the editor, use the SafeArea Tester tool (Window > AirConsole > SafeArea Tester)
16 |
17 | ## Example Scenes
18 |
19 | ### 1. Fullscreen Example
20 |
21 | The `FullscreenSafeAreaHandler.cs` script demonstrates how to adapt a single camera to fit within the safe area. This is the simplest implementation and works well for most single-player games.
22 |
23 | Key features:
24 |
25 | - Automatic adjustment of the main camera's pixel rect
26 | - Optional visual debug representation of the safe area bounds
27 | - Proper event subscription and cleanup
28 |
29 | ### 2. UI Example
30 |
31 | The `UISafeAreaHandler.cs` script shows how to handle safe area changes with UI cameras and canvas scaling. This approach ensures UI elements stay within visible bounds and are properly scaled.
32 |
33 | Key features:
34 |
35 | - Adjusts both the camera and canvas scaler
36 | - Maintains proper UI scaling regardless of safe area changes
37 | - Provides options for different scaling approaches (width, height, or mixed priority)
38 |
39 | ### 3. Split Screen Example
40 |
41 | The `SplitScreenSafeAreaHandler.cs` script demonstrates how to handle complex split-screen setups with multiple players. It supports several configurations:
42 |
43 | Key features:
44 |
45 | - Two players horizontal layout (side by side)
46 | - Two players vertical layout (top and bottom)
47 | - Three players layout (top left, top right, bottom left) with the option to use a 4th camera for an overview camera
48 | - Four players layout (2x2 grid)
49 | - Customizable border width between screens
50 |
51 | ## How to Use
52 |
53 | 1. Add one of the example scripts to a GameObject in your scene (usually the one with your camera)
54 | 2. Configure the script's properties in the inspector
55 | 3. Ensure the AirConsole object in your scene has `Native Game Sizing` enabled
56 | 4. Run your game and test with different safe area sizes using the SafeArea Tester
57 |
58 | ## Additional Information
59 |
60 | For more comprehensive documentation on the SafeArea feature, refer to:
61 |
62 | - [Safe Area Documentation](../../../docs/safe-area.md)
63 | - [AirConsole Developer Documentation](https://developers.airconsole.com/)
64 |
65 | ## Important Notes
66 |
67 | - Always unsubscribe from the `OnSafeAreaChanged` event when your component is destroyed
68 | - The safe area can change at runtime, so your implementation should be prepared to handle changes dynamically
69 | - When using `Native Game Sizing`, the legacy `AndroidUIResizeMode.ResizeCameraAndReferenceResolution` is no longer supported
70 |
71 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/README.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d4e8f9a01b67544b98bd5d7a9cef8f95
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/SingleCameraExample.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0fdbf616877a947a3b45cc8f2713512d
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/SplitScreenCameraExample.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8a1f2d61a4e7349f391dac1a3d582497
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/SplitScreenSafeAreaHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c3d7e8ff0a5634c6ba9a4d6a7be8f3e4
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/UISafeAreaHandler.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b2c6d7ee9f4524b5fa8a3d495af8e2e3
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/safearea-controller.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/safe-area/safearea-controller.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a27fed75b0874f8dbd92eb32a7709e95
3 | timeCreated: 1748866607
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/swipe.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 03b44b45de6374b4bbf4498bd448c5e5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/swipe/Player_Swipe.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace NDream.AirConsole.Examples {
3 | using System.Collections;
4 | using UnityEngine;
5 | using Newtonsoft.Json.Linq;
6 |
7 | public class Player_Swipe : MonoBehaviour {
8 | #if !DISABLE_AIRCONSOLE
9 | private bool materialToggle;
10 |
11 | private float distance = 3f;
12 | private float step = 0.2f;
13 |
14 | private Coroutine movementCoroutine;
15 |
16 | private void Awake() {
17 | AirConsole.instance.onMessage += OnMessage;
18 | }
19 |
20 | private void OnMessage(int from, JToken message) {
21 | //We check if the message I receive has an "action" parameter and if it's a swipe
22 | if (message["action"] != null) {
23 | if (message["action"].ToString() == "swipe") {
24 | //We log the whole vector to see its values
25 | Debug.Log("swipe: " + message["vector"]);
26 |
27 | //if there is already movement going on, we cancel it
28 | if (movementCoroutine != null) {
29 | StopCoroutine(movementCoroutine);
30 | }
31 |
32 | //we convert the x and y values we received to float values and make a new direction vector to pass to our movement function
33 | movementCoroutine =
34 | StartCoroutine(MoveSphere(new Vector3((float)message["vector"]["x"], -(float)message["vector"]["y"], 0)));
35 | }
36 | }
37 | }
38 |
39 | //we make the movement a Coroutine so the sphere moves over time instead of instantly
40 | private IEnumerator MoveSphere(Vector3 direction) {
41 | //calculate the target position
42 | Vector3 targetPosition = transform.position + direction * distance;
43 |
44 | //while the sphere has not reached its target position, move it closer
45 | while (Vector3.Distance(targetPosition, transform.position) > 0.1f) {
46 | transform.position = Vector3.MoveTowards(transform.position, targetPosition, step);
47 | yield return new WaitForFixedUpdate();
48 | }
49 | }
50 |
51 | private void OnDestroy() {
52 | //unregister events
53 | if (AirConsole.instance != null) {
54 | AirConsole.instance.onMessage -= OnMessage;
55 | }
56 | }
57 | #endif
58 | }
59 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/swipe/Player_Swipe.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4e9e02288add1452fb157ba715e7c799
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/swipe/swipe-controller.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 84378337121324cb0b715f2e576e0dfc
3 | timeCreated: 1437829347
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/swipe/swipe.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a8e8f0a8b5a9741c683915ad339b7dd7
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/translations.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1d4661c190c2b4a93b7067eec99970e3
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/translations/TranslationExampleLogic.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | namespace NDream.AirConsole.Examples {
3 | using System.Collections.Generic;
4 | using UnityEngine;
5 | using UnityEngine.UI;
6 | using Newtonsoft.Json.Linq;
7 |
8 | public class TranslationExampleLogic : MonoBehaviour {
9 | public Text translationExample;
10 | public Text[] bulkTranslationExamples;
11 |
12 | private void Awake() {
13 | AirConsole.instance.onMessage += OnMessage;
14 | AirConsole.instance.onReady += OnReady;
15 | }
16 |
17 | private void OnReady(string code) {
18 | //Translations are requested in OnReady so that the translated strings can be stored locally and retrieved quickly afterwards
19 | InitializeTranslations();
20 | }
21 |
22 | private void OnMessage(int from, JToken data) {
23 | //Debug.Log ("message from device " + from + ", data: " + data);
24 | }
25 |
26 | private void InitializeTranslations() {
27 | //simple translations can be called in bulk by passing an array of Unity Text components, or Text Meshes
28 | AirConsole.instance.TranslateUIElements(bulkTranslationExamples);
29 |
30 | //if a translatable text includes a replaceable value, you have to translate it individually and pass along the values
31 | //in this case, we are translating a greeting message that includes the master controller's nickname
32 | //'welcome_nickname' has an English language value of "Welcome %nickname%, glad you're here!"
33 | translationExample.text = AirConsole.instance.GetTranslation("welcome_nickname",
34 | new Dictionary
35 | { { "nickname", AirConsole.instance.GetNickname(AirConsole.instance.GetMasterControllerDeviceId()) } });
36 |
37 | /* Note: to really understand how translations work, we recommend creating your own project in the AirConsole Developer Console.
38 | * in this example, we show how to retrieve translations, but you will not be able to view or edit translatable phrases for the
39 | * example project. Documentation: https://developers.airconsole.com/#!/guides/translations
40 | * */
41 | }
42 |
43 | private void OnDestroy() {
44 | if (AirConsole.instance != null) {
45 | AirConsole.instance.onMessage -= OnMessage;
46 | AirConsole.instance.onReady -= OnReady;
47 | }
48 | }
49 | }
50 | }
51 | #endif
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/translations/TranslationExampleLogic.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 06ed25181fa994159af2bba512317a6b
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/translations/translations-controller.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
31 |
32 |
73 |
74 |
75 |
76 | text
77 |
78 | text
79 | text
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/translations/translations-controller.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d304e4744020045ffa86d603747bbeb9
3 | timeCreated: 1437829347
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/examples/translations/translations.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7d28a38601c2f4547b1ecac64cf96761
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/extras.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 578c692f056674c5aad0c3560a2f1b97
3 | folderAsset: yes
4 | timeCreated: 1478250626
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AirConsole/extras/HighScoreHelper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 627c37fd2703a4e51bb7c6f17da8d20a
3 | timeCreated: 1478250614
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/extras/controller-template.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Assets/AirConsole/extras/controller-template.html.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 898f8131596954b47a4dd4ba0110edca
3 | timeCreated: 1437829347
4 | licenseType: Store
5 | TextScriptImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ac86ea184f38f1d4ca6692142f7ae865
3 | folderAsset: yes
4 | timeCreated: 1435571321
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AirConsole/plugins/Android.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1013605d0d08b491ea2c4f17f5a1eda0
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/plugins/Android/unityandroidlibrary.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/plugins/Android/unityandroidlibrary.aar
--------------------------------------------------------------------------------
/Assets/AirConsole/plugins/Android/unityandroidlibrary.aar.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a532f548e85644012847473cd6910086
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | : Any
16 | second:
17 | enabled: 0
18 | settings:
19 | Exclude Android: 0
20 | Exclude Editor: 1
21 | Exclude Linux64: 1
22 | Exclude OSXUniversal: 1
23 | Exclude WebGL: 1
24 | Exclude Win: 1
25 | Exclude Win64: 1
26 | - first:
27 | Android: Android
28 | second:
29 | enabled: 1
30 | settings:
31 | AndroidSharedLibraryType: Executable
32 | CPU: ARMv7
33 | - first:
34 | Any:
35 | second:
36 | enabled: 0
37 | settings: {}
38 | - first:
39 | Editor: Editor
40 | second:
41 | enabled: 0
42 | settings:
43 | CPU: AnyCPU
44 | DefaultValueInitialized: true
45 | OS: AnyOS
46 | - first:
47 | Standalone: Linux64
48 | second:
49 | enabled: 0
50 | settings:
51 | CPU: x86_64
52 | - first:
53 | Standalone: OSXUniversal
54 | second:
55 | enabled: 0
56 | settings:
57 | CPU: None
58 | - first:
59 | Standalone: Win
60 | second:
61 | enabled: 0
62 | settings:
63 | CPU: x86
64 | - first:
65 | Standalone: Win64
66 | second:
67 | enabled: 0
68 | settings:
69 | CPU: x86_64
70 | userData:
71 | assetBundleName:
72 | assetBundleVariant:
73 |
--------------------------------------------------------------------------------
/Assets/AirConsole/plugins/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/plugins/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/Assets/AirConsole/plugins/Newtonsoft.Json.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 66183dd759e7e4110bf343dffda198a0
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 1
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | Windows Store Apps: WindowsStoreApps
27 | second:
28 | enabled: 0
29 | settings:
30 | CPU: AnyCPU
31 | userData:
32 | assetBundleName:
33 | assetBundleVariant:
34 |
--------------------------------------------------------------------------------
/Assets/AirConsole/plugins/websocket-sharp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/plugins/websocket-sharp.dll
--------------------------------------------------------------------------------
/Assets/AirConsole/plugins/websocket-sharp.dll.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 72843e8dd1ed8d54c8dbfa4df310a5dd
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | : Linux
16 | second:
17 | enabled: 1
18 | settings:
19 | CPU: x86
20 | - first:
21 | : LinuxUniversal
22 | second:
23 | enabled: 1
24 | settings:
25 | CPU: AnyCPU
26 | - first:
27 | : OSXIntel
28 | second:
29 | enabled: 1
30 | settings:
31 | CPU: AnyCPU
32 | - first:
33 | : OSXIntel64
34 | second:
35 | enabled: 1
36 | settings:
37 | CPU: AnyCPU
38 | - first:
39 | : SamsungTV
40 | second:
41 | enabled: 0
42 | settings:
43 | STV_MODEL: STANDARD_13
44 | - first:
45 | : WP8
46 | second:
47 | enabled: 0
48 | settings:
49 | CPU: AnyCPU
50 | DontProcess: False
51 | PlaceholderPath:
52 | - first:
53 | Android: Android
54 | second:
55 | enabled: 1
56 | settings:
57 | CPU: AnyCPU
58 | - first:
59 | Any:
60 | second:
61 | enabled: 0
62 | settings: {}
63 | - first:
64 | Editor: Editor
65 | second:
66 | enabled: 1
67 | settings:
68 | CPU: AnyCPU
69 | DefaultValueInitialized: true
70 | OS: AnyOS
71 | - first:
72 | Facebook: WebGL
73 | second:
74 | enabled: 1
75 | settings: {}
76 | - first:
77 | Facebook: Win
78 | second:
79 | enabled: 1
80 | settings:
81 | CPU: AnyCPU
82 | - first:
83 | Facebook: Win64
84 | second:
85 | enabled: 1
86 | settings:
87 | CPU: AnyCPU
88 | - first:
89 | Standalone: Linux64
90 | second:
91 | enabled: 1
92 | settings:
93 | CPU: AnyCPU
94 | - first:
95 | Standalone: OSXUniversal
96 | second:
97 | enabled: 1
98 | settings:
99 | CPU: AnyCPU
100 | - first:
101 | Standalone: Win
102 | second:
103 | enabled: 1
104 | settings:
105 | CPU: AnyCPU
106 | - first:
107 | Standalone: Win64
108 | second:
109 | enabled: 1
110 | settings:
111 | CPU: AnyCPU
112 | - first:
113 | WebGL: WebGL
114 | second:
115 | enabled: 1
116 | settings: {}
117 | - first:
118 | Windows Store Apps: WindowsStoreApps
119 | second:
120 | enabled: 0
121 | settings:
122 | CPU: AnyCPU
123 | DontProcess: False
124 | PlaceholderPath:
125 | SDK: AnySDK
126 | ScriptingBackend: AnyScriptingBackend
127 | - first:
128 | iPhone: iOS
129 | second:
130 | enabled: 0
131 | settings:
132 | CompileFlags:
133 | FrameworkDependencies:
134 | userData:
135 | assetBundleName:
136 | assetBundleVariant:
137 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c6652518690edc74ba1e583773c8def2
3 | folderAsset: yes
4 | timeCreated: 1435670968
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/AirConsoleBg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/resources/AirConsoleBg.png
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/AirConsoleBg.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f33ccac877cf62b4c80246ed480787f1
3 | timeCreated: 1437760409
4 | licenseType: Store
5 | TextureImporter:
6 | fileIDToRecycleName: {}
7 | serializedVersion: 2
8 | mipmaps:
9 | mipMapMode: 0
10 | enableMipMap: 0
11 | linearTexture: 1
12 | correctGamma: 0
13 | fadeOut: 0
14 | borderMipMap: 0
15 | mipMapFadeDistanceStart: 1
16 | mipMapFadeDistanceEnd: 3
17 | bumpmap:
18 | convertToNormalMap: 0
19 | externalNormalMap: 0
20 | heightScale: .25
21 | normalMapFilter: 0
22 | isReadable: 0
23 | grayScaleToAlpha: 0
24 | generateCubemap: 0
25 | cubemapConvolution: 0
26 | cubemapConvolutionSteps: 8
27 | cubemapConvolutionExponent: 1.5
28 | seamlessCubemap: 0
29 | textureFormat: -3
30 | maxTextureSize: 32
31 | textureSettings:
32 | filterMode: -1
33 | aniso: 1
34 | mipBias: -1
35 | wrapMode: 1
36 | nPOTScale: 0
37 | lightmap: 0
38 | rGBM: 0
39 | compressionQuality: 50
40 | spriteMode: 0
41 | spriteExtrude: 1
42 | spriteMeshType: 1
43 | alignment: 0
44 | spritePivot: {x: .5, y: .5}
45 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
46 | spritePixelsToUnits: 100
47 | alphaIsTransparency: 1
48 | textureType: 2
49 | buildTargetSettings: []
50 | spriteSheet:
51 | sprites: []
52 | spritePackingTag:
53 | userData:
54 | assetBundleName:
55 | assetBundleVariant:
56 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/AirConsoleLogoSmall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/resources/AirConsoleLogoSmall.png
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/AirConsoleLogoSmall.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 24cce4c13e2531f48baeac00c3652527
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: -1
36 | aniso: -1
37 | mipBias: -100
38 | wrapU: 1
39 | wrapV: 1
40 | wrapW: 1
41 | nPOTScale: 0
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 1
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 1
54 | spriteTessellationDetail: -1
55 | textureType: 8
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | maxTextureSizeSet: 0
59 | compressionQualitySet: 0
60 | textureFormatSet: 0
61 | ignorePngGamma: 0
62 | applyGammaDecoding: 0
63 | platformSettings:
64 | - serializedVersion: 3
65 | buildTarget: DefaultTexturePlatform
66 | maxTextureSize: 2048
67 | resizeAlgorithm: 0
68 | textureFormat: -1
69 | textureCompression: 1
70 | compressionQuality: 50
71 | crunchedCompression: 0
72 | allowsAlphaSplitting: 0
73 | overridden: 0
74 | androidETC2FallbackOverride: 0
75 | forceMaximumCompressionQuality_BC6H_BC7: 0
76 | spriteSheet:
77 | serializedVersion: 2
78 | sprites: []
79 | outline: []
80 | physicsShape: []
81 | bones: []
82 | spriteID: 5e97eb03825dee720800000000000000
83 | internalID: 0
84 | vertices: []
85 | indices:
86 | edges: []
87 | weights: []
88 | secondaryTextures: []
89 | spritePackingTag:
90 | pSDRemoveMatte: 0
91 | pSDShowRemoveMatteOption: 0
92 | userData:
93 | assetBundleName:
94 | assetBundleVariant:
95 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/AirConsoleLogoText.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/resources/AirConsoleLogoText.png
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/AirConsoleLogoText.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fa96579cda0638a4d823c2f246c366b9
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | vTOnly: 0
27 | grayScaleToAlpha: 0
28 | generateCubemap: 6
29 | cubemapConvolution: 0
30 | seamlessCubemap: 0
31 | textureFormat: 1
32 | maxTextureSize: 2048
33 | textureSettings:
34 | serializedVersion: 2
35 | filterMode: -1
36 | aniso: -1
37 | mipBias: -100
38 | wrapU: 1
39 | wrapV: 1
40 | wrapW: 1
41 | nPOTScale: 0
42 | lightmap: 0
43 | compressionQuality: 50
44 | spriteMode: 1
45 | spriteExtrude: 1
46 | spriteMeshType: 1
47 | alignment: 0
48 | spritePivot: {x: 0.5, y: 0.5}
49 | spritePixelsToUnits: 100
50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
51 | spriteGenerateFallbackPhysicsShape: 1
52 | alphaUsage: 1
53 | alphaIsTransparency: 1
54 | spriteTessellationDetail: -1
55 | textureType: 8
56 | textureShape: 1
57 | singleChannelComponent: 0
58 | maxTextureSizeSet: 0
59 | compressionQualitySet: 0
60 | textureFormatSet: 0
61 | ignorePngGamma: 0
62 | applyGammaDecoding: 0
63 | platformSettings:
64 | - serializedVersion: 3
65 | buildTarget: DefaultTexturePlatform
66 | maxTextureSize: 2048
67 | resizeAlgorithm: 0
68 | textureFormat: -1
69 | textureCompression: 1
70 | compressionQuality: 50
71 | crunchedCompression: 0
72 | allowsAlphaSplitting: 0
73 | overridden: 0
74 | androidETC2FallbackOverride: 0
75 | forceMaximumCompressionQuality_BC6H_BC7: 0
76 | spriteSheet:
77 | serializedVersion: 2
78 | sprites: []
79 | outline: []
80 | physicsShape: []
81 | bones: []
82 | spriteID: 5e97eb03825dee720800000000000000
83 | internalID: 0
84 | vertices: []
85 | indices:
86 | edges: []
87 | weights: []
88 | secondaryTextures: []
89 | spritePackingTag:
90 | pSDRemoveMatte: 0
91 | pSDShowRemoveMatteOption: 0
92 | userData:
93 | assetBundleName:
94 | assetBundleVariant:
95 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3440620e5ebca4ef5991022029adaaa8
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8dd48c7077044486e8b0e659d7bdfe0a
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Cube1.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: Cube1
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords:
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _DetailAlbedoMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailMask:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailNormalMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _EmissionMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _MainTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _MetallicGlossMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _OcclusionMap:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _ParallaxMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | m_Floats:
58 | - _BumpScale: 1
59 | - _Cutoff: 0.5
60 | - _DetailNormalMapScale: 1
61 | - _DstBlend: 0
62 | - _GlossMapScale: 1
63 | - _Glossiness: 0.5
64 | - _GlossyReflections: 1
65 | - _Metallic: 0
66 | - _Mode: 0
67 | - _OcclusionStrength: 1
68 | - _Parallax: 0.02
69 | - _SmoothnessTextureChannel: 0
70 | - _SpecularHighlights: 1
71 | - _SrcBlend: 1
72 | - _UVSec: 0
73 | - _ZWrite: 1
74 | m_Colors:
75 | - _Color: {r: 0.53333336, g: 0, b: 0.08627451, a: 1}
76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
77 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Cube1.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ad18e7b002c5a46d18e5450b8b45bbf1
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Cube2.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: Cube2
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords:
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _DetailAlbedoMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailMask:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailNormalMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _EmissionMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _MainTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _MetallicGlossMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _OcclusionMap:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _ParallaxMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | m_Floats:
58 | - _BumpScale: 1
59 | - _Cutoff: 0.5
60 | - _DetailNormalMapScale: 1
61 | - _DstBlend: 0
62 | - _GlossMapScale: 1
63 | - _Glossiness: 0.5
64 | - _GlossyReflections: 1
65 | - _Metallic: 0
66 | - _Mode: 0
67 | - _OcclusionStrength: 1
68 | - _Parallax: 0.02
69 | - _SmoothnessTextureChannel: 0
70 | - _SpecularHighlights: 1
71 | - _SrcBlend: 1
72 | - _UVSec: 0
73 | - _ZWrite: 1
74 | m_Colors:
75 | - _Color: {r: 1, g: 0.7607843, b: 0, a: 1}
76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
77 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Cube2.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 580ab468a3a9042538a434a167f03273
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Green.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: Green
11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
12 | m_ShaderKeywords: _EMISSION
13 | m_LightmapFlags: 1
14 | m_EnableInstancingVariants: 0
15 | m_DoubleSidedGI: 0
16 | m_CustomRenderQueue: -1
17 | stringTagMap: {}
18 | disabledShaderPasses: []
19 | m_SavedProperties:
20 | serializedVersion: 3
21 | m_TexEnvs:
22 | - _BumpMap:
23 | m_Texture: {fileID: 0}
24 | m_Scale: {x: 1, y: 1}
25 | m_Offset: {x: 0, y: 0}
26 | - _DetailAlbedoMap:
27 | m_Texture: {fileID: 0}
28 | m_Scale: {x: 1, y: 1}
29 | m_Offset: {x: 0, y: 0}
30 | - _DetailMask:
31 | m_Texture: {fileID: 0}
32 | m_Scale: {x: 1, y: 1}
33 | m_Offset: {x: 0, y: 0}
34 | - _DetailNormalMap:
35 | m_Texture: {fileID: 0}
36 | m_Scale: {x: 1, y: 1}
37 | m_Offset: {x: 0, y: 0}
38 | - _EmissionMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _MainTex:
43 | m_Texture: {fileID: 0}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _MetallicGlossMap:
47 | m_Texture: {fileID: 0}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _OcclusionMap:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _ParallaxMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | m_Floats:
59 | - _BumpScale: 1
60 | - _Cutoff: 0.5
61 | - _DetailNormalMapScale: 1
62 | - _DstBlend: 0
63 | - _GlossMapScale: 1
64 | - _Glossiness: 0.269
65 | - _GlossyReflections: 1
66 | - _Metallic: 0
67 | - _Mode: 0
68 | - _OcclusionStrength: 1
69 | - _Parallax: 0.02
70 | - _SmoothnessTextureChannel: 0
71 | - _SpecularHighlights: 1
72 | - _SrcBlend: 1
73 | - _UVSec: 0
74 | - _ZWrite: 1
75 | m_Colors:
76 | - _Color: {r: 0.41788512, g: 0.8549927, b: 0, a: 1}
77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
78 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Green.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b7e27e5d067ad4a33938b2d5e46e278b
3 | timeCreated: 1447763042
4 | licenseType: Store
5 | NativeFormatImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/ProfilePicturePlane.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 8
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: ProfilePicturePlane
11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
12 | m_Parent: {fileID: 0}
13 | m_ModifiedSerializedProperties: 0
14 | m_ValidKeywords:
15 | - _ALPHABLEND_ON
16 | - _EMISSION
17 | m_InvalidKeywords: []
18 | m_LightmapFlags: 1
19 | m_EnableInstancingVariants: 0
20 | m_DoubleSidedGI: 0
21 | m_CustomRenderQueue: 3000
22 | stringTagMap:
23 | RenderType: Transparent
24 | disabledShaderPasses: []
25 | m_LockedProperties:
26 | m_SavedProperties:
27 | serializedVersion: 3
28 | m_TexEnvs:
29 | - _BumpMap:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailAlbedoMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _DetailMask:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _DetailNormalMap:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _EmissionMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _MainTex:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _MetallicGlossMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | - _OcclusionMap:
58 | m_Texture: {fileID: 0}
59 | m_Scale: {x: 1, y: 1}
60 | m_Offset: {x: 0, y: 0}
61 | - _ParallaxMap:
62 | m_Texture: {fileID: 0}
63 | m_Scale: {x: 1, y: 1}
64 | m_Offset: {x: 0, y: 0}
65 | m_Ints: []
66 | m_Floats:
67 | - _BumpScale: 1
68 | - _Cutoff: 0
69 | - _DetailNormalMapScale: 1
70 | - _DstBlend: 10
71 | - _GlossMapScale: 1
72 | - _Glossiness: 0
73 | - _GlossyReflections: 1
74 | - _Metallic: 0
75 | - _Mode: 2
76 | - _OcclusionStrength: 1
77 | - _Parallax: 0.02
78 | - _SmoothnessTextureChannel: 0
79 | - _SpecularHighlights: 1
80 | - _SrcBlend: 5
81 | - _UVSec: 0
82 | - _ZWrite: 0
83 | m_Colors:
84 | - _Color: {r: 0, g: 0, b: 0, a: 0}
85 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
86 | m_BuildTextureStacks: []
87 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/ProfilePicturePlane.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 50229279e85ab4dcea2b928155d53b71
3 | timeCreated: 1449823528
4 | licenseType: Store
5 | NativeFormatImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Sphere 1.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: Sphere 1
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _DetailAlbedoMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailMask:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailNormalMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _EmissionMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _MainTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _MetallicGlossMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _OcclusionMap:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _ParallaxMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | m_Floats:
58 | - _BumpScale: 1
59 | - _Cutoff: 0.5
60 | - _DetailNormalMapScale: 1
61 | - _DstBlend: 0
62 | - _GlossMapScale: 1
63 | - _Glossiness: 0
64 | - _GlossyReflections: 1
65 | - _Metallic: 0
66 | - _Mode: 0
67 | - _OcclusionStrength: 1
68 | - _Parallax: 0.02
69 | - _SmoothnessTextureChannel: 1
70 | - _SpecularHighlights: 1
71 | - _SrcBlend: 1
72 | - _UVSec: 0
73 | - _ZWrite: 1
74 | m_Colors:
75 | - _Color: {r: 1, g: 1, b: 1, a: 1}
76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
77 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Sphere 1.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a1fe0c83760104b82bcc0bd691a406e8
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Sphere.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: Sphere
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords: _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _DetailAlbedoMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailMask:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailNormalMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _EmissionMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _MainTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _MetallicGlossMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _OcclusionMap:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _ParallaxMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | m_Floats:
58 | - _BumpScale: 1
59 | - _Cutoff: 0.5
60 | - _DetailNormalMapScale: 1
61 | - _DstBlend: 0
62 | - _GlossMapScale: 1
63 | - _Glossiness: 0
64 | - _GlossyReflections: 1
65 | - _Metallic: 0
66 | - _Mode: 0
67 | - _OcclusionStrength: 1
68 | - _Parallax: 0.02
69 | - _SmoothnessTextureChannel: 1
70 | - _SpecularHighlights: 1
71 | - _SrcBlend: 1
72 | - _UVSec: 0
73 | - _ZWrite: 1
74 | m_Colors:
75 | - _Color: {r: 0, g: 0, b: 0, a: 1}
76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
77 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/Sphere.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 096ffefe818ad4bfcbe4b1438aee72ac
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/bouncy.physicsMaterial2D:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!62 &6200000
4 | PhysicsMaterial2D:
5 | m_ObjectHideFlags: 0
6 | m_PrefabParentObject: {fileID: 0}
7 | m_PrefabInternal: {fileID: 0}
8 | m_Name: bouncy
9 | friction: 0
10 | bounciness: 1
11 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/bouncy.physicsMaterial2D.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 72b2deea4eb46aa428f636f09b7b55d3
3 | timeCreated: 1437925853
4 | licenseType: Store
5 | NativeFormatImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/transparent.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: transparent
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords: _ALPHABLEND_ON
12 | m_LightmapFlags: 4
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: 3000
16 | stringTagMap:
17 | RenderType: Transparent
18 | disabledShaderPasses: []
19 | m_SavedProperties:
20 | serializedVersion: 3
21 | m_TexEnvs:
22 | - _BumpMap:
23 | m_Texture: {fileID: 0}
24 | m_Scale: {x: 1, y: 1}
25 | m_Offset: {x: 0, y: 0}
26 | - _DetailAlbedoMap:
27 | m_Texture: {fileID: 0}
28 | m_Scale: {x: 1, y: 1}
29 | m_Offset: {x: 0, y: 0}
30 | - _DetailMask:
31 | m_Texture: {fileID: 0}
32 | m_Scale: {x: 1, y: 1}
33 | m_Offset: {x: 0, y: 0}
34 | - _DetailNormalMap:
35 | m_Texture: {fileID: 0}
36 | m_Scale: {x: 1, y: 1}
37 | m_Offset: {x: 0, y: 0}
38 | - _EmissionMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _MainTex:
43 | m_Texture: {fileID: 0}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _MetallicGlossMap:
47 | m_Texture: {fileID: 0}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _OcclusionMap:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _ParallaxMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | m_Floats:
59 | - _BumpScale: 1
60 | - _Cutoff: 0.5
61 | - _DetailNormalMapScale: 1
62 | - _DstBlend: 10
63 | - _GlossMapScale: 1
64 | - _Glossiness: 0
65 | - _GlossyReflections: 1
66 | - _Metallic: 0
67 | - _Mode: 2
68 | - _OcclusionStrength: 1
69 | - _Parallax: 0.02
70 | - _SmoothnessTextureChannel: 0
71 | - _SpecularHighlights: 1
72 | - _SrcBlend: 5
73 | - _UVSec: 0
74 | - _ZWrite: 0
75 | m_Colors:
76 | - _Color: {r: 1, g: 1, b: 1, a: 0.50980395}
77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
78 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Materials/transparent.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6964da17416934c91b9a4e29f8c2d16d
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Meshes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2a89ae0fedff8430e98fd9dea447ee86
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Meshes/LogoAirConsole.fbx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/resources/Art/Meshes/LogoAirConsole.fbx
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Meshes/LogoAirConsole.fbx.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 099bfe4af54b04dd88d6658405b1b203
3 | ModelImporter:
4 | serializedVersion: 19301
5 | internalIDToNameTable: []
6 | externalObjects: {}
7 | materials:
8 | materialImportMode: 1
9 | materialName: 0
10 | materialSearch: 1
11 | materialLocation: 1
12 | animations:
13 | legacyGenerateAnimations: 4
14 | bakeSimulation: 0
15 | resampleCurves: 1
16 | optimizeGameObjects: 0
17 | motionNodeName:
18 | rigImportErrors:
19 | rigImportWarnings:
20 | animationImportErrors:
21 | animationImportWarnings:
22 | animationRetargetingWarnings:
23 | animationDoRetargetingWarnings: 0
24 | importAnimatedCustomProperties: 0
25 | importConstraints: 0
26 | animationCompression: 1
27 | animationRotationError: 0.5
28 | animationPositionError: 0.5
29 | animationScaleError: 0.5
30 | animationWrapMode: 0
31 | extraExposedTransformPaths: []
32 | extraUserProperties: []
33 | clipAnimations: []
34 | isReadable: 0
35 | meshes:
36 | lODScreenPercentages: []
37 | globalScale: 1
38 | meshCompression: 0
39 | addColliders: 0
40 | useSRGBMaterialColor: 1
41 | sortHierarchyByName: 1
42 | importVisibility: 1
43 | importBlendShapes: 1
44 | importCameras: 1
45 | importLights: 1
46 | fileIdsGeneration: 2
47 | swapUVChannels: 0
48 | generateSecondaryUV: 0
49 | useFileUnits: 1
50 | keepQuads: 0
51 | weldVertices: 1
52 | preserveHierarchy: 0
53 | skinWeightsMode: 0
54 | maxBonesPerVertex: 4
55 | minBoneWeight: 0.001
56 | meshOptimizationFlags: -1
57 | indexFormat: 0
58 | secondaryUVAngleDistortion: 8
59 | secondaryUVAreaDistortion: 15.000001
60 | secondaryUVHardAngle: 88
61 | secondaryUVPackMargin: 4
62 | useFileScale: 1
63 | tangentSpace:
64 | normalSmoothAngle: 60
65 | normalImportMode: 0
66 | tangentImportMode: 3
67 | normalCalculationMode: 4
68 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
69 | blendShapeNormalImportMode: 1
70 | normalSmoothingSource: 0
71 | referencedClips: []
72 | importAnimation: 1
73 | humanDescription:
74 | serializedVersion: 3
75 | human: []
76 | skeleton: []
77 | armTwist: 0.5
78 | foreArmTwist: 0.5
79 | upperLegTwist: 0.5
80 | legTwist: 0.5
81 | armStretch: 0.05
82 | legStretch: 0.05
83 | feetSpacing: 0
84 | globalScale: 1
85 | rootMotionBoneName:
86 | hasTranslationDoF: 0
87 | hasExtraRoot: 0
88 | skeletonHasParents: 1
89 | lastHumanDescriptionAvatarSource: {instanceID: 0}
90 | autoGenerateAvatarMappingIfUnspecified: 1
91 | animationType: 2
92 | humanoidOversampling: 1
93 | avatarSetup: 0
94 | additionalBone: 0
95 | userData:
96 | assetBundleName:
97 | assetBundleVariant:
98 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Sprites.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9c07e76cc9d2f4d4386a5f774ba8d45e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Sprites/ball.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/resources/Art/Sprites/ball.png
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Sprites/ball.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 658e3cbaebcabe54fa3484bc714c9df5
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 10
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 1
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: -3
31 | maxTextureSize: 32
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: 16
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: 1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 3
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 32
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 0
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | forceMaximumCompressionQuality_BC6H_BC7: 0
73 | spriteSheet:
74 | serializedVersion: 2
75 | sprites: []
76 | outline: []
77 | physicsShape: []
78 | bones: []
79 | spriteID: 5e97eb03825dee720800000000000000
80 | internalID: 0
81 | vertices: []
82 | indices:
83 | edges: []
84 | weights: []
85 | secondaryTextures: []
86 | spritePackingTag:
87 | pSDRemoveMatte: 0
88 | pSDShowRemoveMatteOption: 0
89 | userData:
90 | assetBundleName:
91 | assetBundleVariant:
92 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Sprites/player.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/resources/Art/Sprites/player.png
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Art/Sprites/player.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 179e85ac2a85c954e8523c81bdb28cb4
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 10
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 1
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: -3
31 | maxTextureSize: 256
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: 16
36 | mipBias: -100
37 | wrapU: 1
38 | wrapV: 1
39 | wrapW: 1
40 | nPOTScale: 0
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 1
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 1
53 | spriteTessellationDetail: -1
54 | textureType: 8
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | platformSettings:
61 | - serializedVersion: 3
62 | buildTarget: DefaultTexturePlatform
63 | maxTextureSize: 256
64 | resizeAlgorithm: 0
65 | textureFormat: -1
66 | textureCompression: 0
67 | compressionQuality: 50
68 | crunchedCompression: 0
69 | allowsAlphaSplitting: 0
70 | overridden: 0
71 | androidETC2FallbackOverride: 0
72 | forceMaximumCompressionQuality_BC6H_BC7: 0
73 | spriteSheet:
74 | serializedVersion: 2
75 | sprites: []
76 | outline: []
77 | physicsShape: []
78 | bones: []
79 | spriteID: 5e97eb03825dee720800000000000000
80 | internalID: 0
81 | vertices: []
82 | indices:
83 | edges: []
84 | weights: []
85 | secondaryTextures: []
86 | spritePackingTag:
87 | pSDRemoveMatte: 0
88 | pSDShowRemoveMatteOption: 0
89 | userData:
90 | assetBundleName:
91 | assetBundleVariant:
92 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Audio.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 700787e485c61408fb4839584bd923a1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Audio/Music.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 45ed1a2c10e234a6aa6cef9a65c1664a
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Audio/Music/Happy_1.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/resources/Audio/Music/Happy_1.wav
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Audio/Music/Happy_1.wav.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 804632e1e46684476b4ea5f752e8df15
3 | AudioImporter:
4 | externalObjects: {}
5 | serializedVersion: 6
6 | defaultSettings:
7 | loadType: 0
8 | sampleRateSetting: 0
9 | sampleRateOverride: 44100
10 | compressionFormat: 1
11 | quality: 1
12 | conversionMode: 0
13 | platformSettingOverrides: {}
14 | forceToMono: 0
15 | normalize: 1
16 | preloadAudioData: 1
17 | loadInBackground: 0
18 | ambisonic: 0
19 | 3D: 1
20 | userData:
21 | assetBundleName:
22 | assetBundleVariant:
23 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Prefabs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d7405f219f8d64e79830660a445e5888
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/Prefabs/PlayerCapsule.prefab.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 38981a680ee6e49a7a8e01595d2bdf3a
3 | PrefabImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/android banner placeholder.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/resources/android banner placeholder.jpg
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/android banner placeholder.jpg.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 89e42e8f0e05b4d99b5c6004a59d06f1
3 | TextureImporter:
4 | fileIDToRecycleName: {}
5 | externalObjects: {}
6 | serializedVersion: 5
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 0
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | grayScaleToAlpha: 0
25 | generateCubemap: 6
26 | cubemapConvolution: 0
27 | seamlessCubemap: 0
28 | textureFormat: 1
29 | maxTextureSize: 2048
30 | textureSettings:
31 | serializedVersion: 2
32 | filterMode: -1
33 | aniso: -1
34 | mipBias: -1
35 | wrapU: 1
36 | wrapV: 1
37 | wrapW: 1
38 | nPOTScale: 0
39 | lightmap: 0
40 | compressionQuality: 50
41 | spriteMode: 1
42 | spriteExtrude: 1
43 | spriteMeshType: 1
44 | alignment: 0
45 | spritePivot: {x: 0.5, y: 0.5}
46 | spritePixelsToUnits: 100
47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
48 | spriteGenerateFallbackPhysicsShape: 1
49 | alphaUsage: 1
50 | alphaIsTransparency: 1
51 | spriteTessellationDetail: -1
52 | textureType: 8
53 | textureShape: 1
54 | singleChannelComponent: 0
55 | maxTextureSizeSet: 0
56 | compressionQualitySet: 0
57 | textureFormatSet: 0
58 | platformSettings:
59 | - serializedVersion: 2
60 | buildTarget: DefaultTexturePlatform
61 | maxTextureSize: 2048
62 | resizeAlgorithm: 0
63 | textureFormat: -1
64 | textureCompression: 1
65 | compressionQuality: 50
66 | crunchedCompression: 0
67 | allowsAlphaSplitting: 0
68 | overridden: 0
69 | androidETC2FallbackOverride: 0
70 | spriteSheet:
71 | serializedVersion: 2
72 | sprites: []
73 | outline: []
74 | physicsShape: []
75 | bones: []
76 | spriteID: d24065db3d4f44335a38872ccd8b2c42
77 | vertices: []
78 | indices:
79 | edges: []
80 | weights: []
81 | spritePackingTag:
82 | userData:
83 | assetBundleName:
84 | assetBundleVariant:
85 |
--------------------------------------------------------------------------------
/Assets/AirConsole/resources/androidtv-loadingscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/resources/androidtv-loadingscreen.png
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 78f15d4c3531b674fa239b9031b7d69b
3 | folderAsset: yes
4 | timeCreated: 1435571204
5 | licenseType: Store
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bef99b3522d00c447b4ac4b6afe11b35
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/AirConsole.Editor.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AirConsole.Editor",
3 | "rootNamespace": "NDream.AirConsole.Editor",
4 | "references": [
5 | "AirConsole.Runtime",
6 | "UnityEditor.UI"
7 | ],
8 | "includePlatforms": [
9 | "Editor"
10 | ],
11 | "excludePlatforms": [],
12 | "allowUnsafeCode": false,
13 | "overrideReferences": true,
14 | "precompiledReferences": [
15 | "Newtonsoft.Json.dll"
16 | ],
17 | "autoReferenced": true,
18 | "defineConstraints": [
19 | "UNITY_2022_3_OR_NEWER"
20 | ],
21 | "versionDefines": [],
22 | "noEngineReferences": false
23 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/AirConsole.Editor.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 42224983e155e41ae9a9caf097f2acc8
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 |
3 | [assembly: InternalsVisibleTo("AirConsole.Editor.Tests")]
4 |
5 | namespace NDream.AirConsole.Editor {
6 | public class AssemblyInfo { }
7 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/AssemblyInfo.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a24f2049e3a542c6a1e32600687ab8d8
3 | timeCreated: 1741882098
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/Assets.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7300270c72d5945a0ac28483b434d719
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/Assets/AirConsoleIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AirConsole/airconsole-unity-plugin/4de46189f1750ddc6749244c47bc43c2f3fc5150/Assets/AirConsole/scripts/Editor/Assets/AirConsoleIcon.png
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c381f3ab8a094e36b2d764ac3b026fa5
3 | timeCreated: 1746690423
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/AndroidGradleProcessor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 85a6f69111854635a025c12665371f95
3 | timeCreated: 1745398290
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/AndroidManifest.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | using System.Diagnostics.CodeAnalysis;
3 | using System.Xml;
4 |
5 | namespace NDream.AirConsole.Editor {
6 | // Approach based on https://stackoverflow.com/questions/56886994/c-sharp-adding-attribute-to-xml-element-appends-the-namespace-to-the-end-of-the
7 | [SuppressMessage("ReSharper", "UnusedMember.Global")]
8 | internal class AndroidManifest : AndroidXmlDocument {
9 | private readonly XmlElement ApplicationElement;
10 |
11 | internal AndroidManifest(string path) : base(path) {
12 | ApplicationElement = SelectSingleNode("/manifest/application") as XmlElement;
13 | }
14 |
15 | internal XmlAttribute GenerateAttribute(string prefix, string key, string value, string XmlNamespace) {
16 | XmlAttribute attr = CreateAttribute(prefix, key, XmlNamespace);
17 | attr.Value = value;
18 | return attr;
19 | }
20 |
21 | internal void SetAttribute(XmlAttribute Attribute) {
22 | ApplicationElement.Attributes.Append(Attribute);
23 | }
24 | }
25 | }
26 | #endif
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/AndroidManifest.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b217a021a66642c7959b7a10b88663aa
3 | timeCreated: 1740744068
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/AndroidManifestProcessor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9ac7776244484c6c9bcccecea83ed32a
3 | timeCreated: 1740744263
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/AndroidProjectProcessor.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | namespace NDream.AirConsole.Editor {
3 | using UnityEditor.Android;
4 |
5 | public class AndroidProjectProcessor : IPostGenerateGradleAndroidProject {
6 | public int callbackOrder {
7 | get => 999;
8 | }
9 |
10 | public void OnPostGenerateGradleAndroidProject(string projectPath) {
11 | AndroidGradleProcessor.Execute(projectPath);
12 | AndroidManifestProcessor.Execute(projectPath);
13 | }
14 | }
15 | }
16 | #endif
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/AndroidProjectProcessor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 14434a3537884dd6b4ba1a52486e184b
3 | timeCreated: 1748939901
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/AndroidXMLDocument.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | using System.Text;
3 | using System.Xml;
4 |
5 | namespace NDream.AirConsole.Editor {
6 | // Approach based on https://stackoverflow.com/questions/56886994/c-sharp-adding-attribute-to-xml-element-appends-the-namespace-to-the-end-of-the
7 | internal class AndroidXmlDocument : XmlDocument {
8 | private readonly string documentPath;
9 | private readonly XmlNamespaceManager nsManager;
10 | internal readonly string AndroidXmlNamespace = "http://schemas.android.com/apk/res/android";
11 | internal readonly string ToolsXmlNamespace = "http://schemas.android.com/tools";
12 |
13 | internal AndroidXmlDocument(string path) {
14 | documentPath = path;
15 | using (XmlTextReader reader = new(documentPath)) {
16 | reader.Read();
17 | Load(reader);
18 | }
19 |
20 | nsManager = new XmlNamespaceManager(NameTable);
21 | nsManager.AddNamespace("android", AndroidXmlNamespace);
22 | nsManager.AddNamespace("tools", ToolsXmlNamespace);
23 | }
24 |
25 | ///
26 | /// Saves the XML document at the current documentPath.
27 | ///
28 | /// Returns the path at which the document was saved.
29 | internal string Save() {
30 | return SaveAs(documentPath);
31 | }
32 |
33 | private string SaveAs(string path) {
34 | using (XmlTextWriter writer = new(path, new UTF8Encoding(false))) {
35 | writer.Formatting = Formatting.Indented;
36 | Save(writer);
37 | }
38 |
39 | return path;
40 | }
41 | }
42 | }
43 | #endif
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/AndroidXMLDocument.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8f34adc7144b4c5f84335b4f6e3eef5d
3 | timeCreated: 1740744100
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/PostBuildProcess.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 |
3 | namespace NDream.AirConsole.Editor {
4 | using UnityEditor;
5 | using UnityEditor.Callbacks;
6 | using System.IO;
7 | using System;
8 | using System.Text.RegularExpressions;
9 | using UnityEngine;
10 |
11 | public class PostBuildProcess {
12 | [PostProcessBuild(1)]
13 | public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) {
14 | if (target == BuildTarget.WebGL) {
15 | ValidateApiUsage();
16 |
17 | // Copy index.html to screen.html and overwrite it if necessary.
18 | File.Copy(pathToBuiltProject + "/index.html", pathToBuiltProject + "/screen.html", true);
19 |
20 | // Save last port path
21 | EditorPrefs.SetString("airconsolePortPath", pathToBuiltProject);
22 |
23 | }
24 | }
25 |
26 | private static void ValidateApiUsage() {
27 | string webGLTemplateDirectory = PreBuildProcessing.GetWebGLTemplateDirectory();
28 | if (!VerifyAPIUsage(Path.Combine(webGLTemplateDirectory, "index.html"), Settings.RequiredMinimumVersion)
29 | // || !VerifyAPIUsage(pathToBuiltProject + "/screen.html", Settings.RequiredMinimumVersion)
30 | || !VerifyAPIUsage(Path.Combine(webGLTemplateDirectory, "controller.html"), Settings.RequiredMinimumVersion)) {
31 | AirConsoleLogger.LogError(() => "Outdated AirConsole API detected. Please check the previous logs to address the problem.");
32 | throw new UnityException("Build failed. Outdated AirConsole API detected");
33 | }
34 | }
35 |
36 | private static bool VerifyAPIUsage(string pathToHtml, Version requiredApiVersion) {
37 | // Using regex, check if the reference to airconsole-Major.Minor.Patch is at least as big as requiredMinimumVersion. Also ensure that it is not airconsole-latest.js
38 | string reference = File.ReadAllText(pathToHtml);
39 | Regex regex = new(@"airconsole-(\d+)\.(\d+)\.(\d+)\.js", RegexOptions.IgnoreCase);
40 | Match match = regex.Match(reference);
41 | string apiVersion = $"airconsole-{requiredApiVersion.Major}.{requiredApiVersion.Minor}.{requiredApiVersion.Build}.js";
42 | if (match.Success && !reference.Contains("airconsole-latest.js")) {
43 | int major = int.Parse(match.Groups[1].Value);
44 | int minor = int.Parse(match.Groups[2].Value);
45 | int revision = int.Parse(match.Groups[3].Value);
46 |
47 | Version referencedVersion = new(major, minor, revision);
48 | if (referencedVersion >= requiredApiVersion) {
49 | AirConsoleLogger.LogDevelopment(() => $"Valid API reference {match.Groups[0]} found.");
50 | } else {
51 | AirConsoleLogger.LogError(
52 | () => $"airconsole-{major}.{minor}.{revision}.js found. This is outdated, please update to {apiVersion}");
53 | return false;
54 | }
55 | } else if (reference.Contains("airconsole-latest.js")) {
56 | AirConsoleLogger.LogError(
57 | () => $"{pathToHtml} uses airconsole-latest.js. Please fix it to use {apiVersion}");
58 |
59 | return false;
60 | }
61 |
62 | return true;
63 | }
64 | }
65 | }
66 | #endif
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/PostBuildProcess.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bf693daf251b5744c94fbae65dd60f4f
3 | timeCreated: 1435670435
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/PreBuildProcessing.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE && UNITY_EDITOR
2 |
3 | namespace NDream.AirConsole.Editor {
4 | using System.IO;
5 | using System.Linq;
6 | using UnityEditor;
7 | using UnityEditor.Build;
8 | using UnityEditor.Build.Reporting;
9 | using UnityEngine;
10 |
11 | public class PreBuildProcessing : IPreprocessBuildWithReport {
12 | public int callbackOrder => 1;
13 |
14 | public void OnPreprocessBuild(BuildReport report) {
15 | if (report.summary.platform == BuildTarget.WebGL) {
16 | CheckWebGLSetup();
17 | }
18 | }
19 |
20 | private static void CheckWebGLSetup() {
21 | if (string.IsNullOrEmpty(PlayerSettings.WebGL.template)) {
22 | EditorUtility.DisplayDialog("Error", "No WebGL Template configured", "Cancel");
23 | throw new BuildFailedException("WebGL template not configured");
24 | }
25 |
26 | if (Directory.Exists(GetWebGLTemplateDirectory())) {
27 | string templatePath = GetWebGLTemplateDirectory();
28 | if (!Directory.GetFiles(templatePath).Any(filename => filename.EndsWith("controller.html"))) {
29 | EditorUtility.DisplayDialog("Error",
30 | "The controller has not yet been generated. Please execute the game at least once in play mode.",
31 | "OK");
32 | throw new BuildFailedException("Controller missing in WebGL template location.");
33 | }
34 |
35 | if (!Directory.GetFiles(templatePath).Any(filename => filename.EndsWith("airconsole-unity-plugin.js"))) {
36 | EditorUtility.DisplayDialog("Error",
37 | "airconsole-unity-plugin missing. Please set up your airconsole plugin again",
38 | "Cancel");
39 | throw new BuildFailedException("Unity template incomplete");
40 | }
41 | }
42 | }
43 |
44 | internal static string GetWebGLTemplateDirectory() =>
45 | Path.GetFullPath("Assets/WebGLTemplates/" + PlayerSettings.WebGL.template.Split(':')[1]);
46 | }
47 | }
48 | #endif
49 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/BuildAutomation/PreBuildProcessing.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a07a0f17666ca403baa269023708928a
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/Extentions.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e2536216e3cc26742a0e293a982ed909
3 | timeCreated: 1437754626
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/Inspector.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b821d1b6206d7784cafde0ec55116ef9
3 | timeCreated: 1435670925
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/PlayMode.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEditor;
3 | using System;
4 | using System.Collections;
5 |
6 | namespace NDream.AirConsole.Editor {
7 | public enum PlayModeState {
8 | Stopped,
9 | Playing,
10 | Paused,
11 | AboutToStop,
12 | AboutToPlay
13 | }
14 |
15 | [InitializeOnLoad]
16 | public class PlayMode {
17 | private static PlayModeState _currentState = PlayModeState.Stopped;
18 |
19 | static PlayMode() {
20 | EditorApplication.playModeStateChanged += OnUnityPlayModeChanged;
21 | if (EditorApplication.isPaused) {
22 | _currentState = PlayModeState.Paused;
23 | }
24 | }
25 |
26 | private static int Bool2Int(bool b) {
27 | if (b) {
28 | return 1;
29 | } else {
30 | return 2;
31 | }
32 | }
33 |
34 | private static int GetEditorAppStateBoolComb() {
35 | int b1 = Bool2Int(EditorApplication.isUpdating);
36 | int b2 = Bool2Int(EditorApplication.isPlayingOrWillChangePlaymode);
37 | int b3 = Bool2Int(EditorApplication.isPlaying);
38 | int b4 = Bool2Int(EditorApplication.isPaused);
39 | int b5 = Bool2Int(EditorApplication.isCompiling);
40 | return b1 + b2 * 10 + b3 * 100 + b4 * 1000 + b5 * 10000;
41 | }
42 |
43 | public static event Action PlayModeChanged;
44 |
45 | private static void OnPlayModeChanged(PlayModeState currentState, PlayModeState changedState) {
46 | if (PlayModeChanged != null) {
47 | PlayModeChanged(currentState, changedState);
48 | }
49 | }
50 |
51 | private static void OnUnityPlayModeChanged(PlayModeStateChange playModeState) {
52 | PlayModeState changedState = PlayModeState.Stopped;
53 |
54 | int state = GetEditorAppStateBoolComb();
55 |
56 | switch (state) {
57 | case 22112:
58 | changedState = PlayModeState.Playing;
59 | break;
60 | case 21112:
61 | changedState = PlayModeState.Paused;
62 | break;
63 | case 22222:
64 | changedState = PlayModeState.Stopped;
65 | break;
66 | case 22122:
67 | changedState = PlayModeState.AboutToStop;
68 | break;
69 | case 21122:
70 | changedState = PlayModeState.AboutToStop;
71 | break;
72 | case 21222:
73 | changedState = PlayModeState.Stopped;
74 | break;
75 | case 22212:
76 | changedState = PlayModeState.Stopped;
77 | break;
78 | case 21212:
79 | changedState = PlayModeState.Paused;
80 | break;
81 | default:
82 | AirConsoleLogger.LogDevelopment(() => $"No such state combination defined: {state}");
83 | break;
84 | }
85 |
86 | // Fire PlayModeChanged event.
87 | if (_currentState != changedState) {
88 | OnPlayModeChanged(_currentState, changedState);
89 | }
90 |
91 | // Set current state.
92 | _currentState = changedState;
93 | }
94 | }
95 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/PlayMode.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f62f6a50dc6e20241aca97d01fbb2881
3 | timeCreated: 1437762758
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/PluginDevelopment.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2b08e24dfc564c8798306eec21a9b309
3 | timeCreated: 1746690692
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/PluginDevelopment/BuildHelper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: acdaff160185f4c7aa8de39913450979
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/PluginDevelopment/DevelopmentTools.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b00236f82e6c47f48ebc744fd2aebede
3 | timeCreated: 1741277117
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f3bc69a38d0f4c8da71c33f757931ce8
3 | timeCreated: 1746690637
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/ProjectConfigurationCheck.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ad7ea0ffc1224648b158fd41c19d78b9
3 | timeCreated: 1733323668
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/ProjectDependencyCheck.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | namespace NDream.AirConsole.Editor {
3 | using UnityEditor;
4 | using UnityEngine;
5 | using System;
6 |
7 | public abstract class ProjectDependencyCheck {
8 | [InitializeOnLoadMethod]
9 | private static void CheckUnityVersions() {
10 | ValidateUnityVersion(EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android);
11 | }
12 |
13 | ///
14 | /// To meet automotive requirements, we need to have certain minimum versions of Unity that have updated dependencies.
15 | /// To make the game developer experience consistent, we always check for this.
16 | ///
17 | internal static void ValidateUnityVersion(bool invokeErrorOnFail = false) {
18 | string unityVersion = GetUnityVersion();
19 | string[] versions = unityVersion.Split(".");
20 |
21 | Version requiredVersion = versions[0] switch {
22 | // 2022.3.?? -> 2022.3.62f2 first with CVE-2025-59489 fix
23 | "2022" => new Version(2022, 3, 62, 2),
24 | "6000" => versions[1] switch {
25 | // 6000.0.?? -> 6000.0.58f2 first with CVE-2025-59489 fix
26 | "0" => new Version(6000, 0, 58, 2),
27 |
28 | // 6000.1.?? -> 6000.1.17f1 first with CVE-2025-59489 fix
29 | "1" => new Version(6000, 1, 17, 1),
30 |
31 | // 6000.2.?? -> 6000.2.6f2 first with CVE-2025-59489 fix
32 | "2" => new Version(6000, 2, 6, 2),
33 |
34 | // 6000.3.?? -> 6000.3.0b4 first with CVE-2025-59489 fix but we require official releases
35 | _ => new Version(6000, 3, 0, 1)
36 | },
37 | _ => new Version(6000, 0, 58, 2)
38 | };
39 |
40 | if (!SemVerCheck.ValidateUnityVersionMinimum(requiredVersion, unityVersion)) {
41 | InvokeErrorOrLog(
42 | $"For security (CVE-2025-59489), AirConsole requires at least Unity {StringFromVersion(requiredVersion)}",
43 | $"Insecure version {unityVersion}", invokeErrorOnFail);
44 | }
45 | }
46 |
47 | private static void InvokeErrorOrLog(string message, string title, bool shallError = false) {
48 | #if UNITY_INCLUDE_TESTS
49 | if (InvokeErrorOrLogOverride != null) {
50 | InvokeErrorOrLogOverride(message, title, shallError);
51 | return;
52 | }
53 | #endif
54 | if (!shallError) {
55 | AirConsoleLogger.LogWarning(() => message);
56 | return;
57 | }
58 |
59 | EditorNotificationService.InvokeError(message, false, title);
60 | }
61 |
62 | private static string StringFromVersion(Version version) => $"{version.Major}.{version.Minor}.{version.Build}f{version.Revision}";
63 |
64 | private static string GetUnityVersion() {
65 | #if UNITY_INCLUDE_TESTS
66 | return UnityVersionProvider?.Invoke() ?? Application.unityVersion;
67 | #else
68 | return Application.unityVersion;
69 | #endif
70 | }
71 |
72 | #if UNITY_INCLUDE_TESTS
73 | internal static Func? UnityVersionProvider;
74 | internal static Action? InvokeErrorOrLogOverride;
75 | #endif
76 | }
77 | }
78 | #endif
79 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/ProjectDependencyCheck.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 83b84b7ca50e415bb4976894b56069b3
3 | timeCreated: 1746690860
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/ProjectPreferenceManager.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | using System;
3 | using System.IO;
4 | using Newtonsoft.Json;
5 | using UnityEngine;
6 |
7 | namespace NDream.AirConsole.Editor {
8 | internal abstract class ProjectPreferenceManager {
9 | private static string PreferencePath => Path.GetFullPath(Path.Combine(Application.dataPath, "AirConsole", "airconsole.prefs"));
10 |
11 | ///
12 | /// Loads the Project Preferences.
13 | ///
14 | /// The loaded ProjectPreferences object.
15 | internal static ProjectPreferences LoadPreferences() {
16 | if (!File.Exists(PreferencePath)) {
17 | ProjectPreferences newPreferences = new();
18 | SavePreferences(newPreferences);
19 | return newPreferences;
20 | }
21 |
22 | ProjectPreferences result = JsonConvert.DeserializeObject(File.ReadAllText(PreferencePath));
23 | return result;
24 | }
25 |
26 | ///
27 | /// Saves new project preferences. This overwrites the complete preferences. This does not update single changed keys.
28 | ///
29 | /// The ProjectPreferences to persist.
30 | /// Thrown when preferences is null
31 | internal static void SavePreferences(ProjectPreferences preferences) {
32 | if (preferences == null) {
33 | throw new ArgumentNullException(nameof(preferences));
34 | }
35 |
36 | File.WriteAllText(PreferencePath, JsonConvert.SerializeObject(preferences, Formatting.None));
37 | }
38 | }
39 | }
40 | #endif
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/ProjectPreferenceManager.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9769679c284f4a8ab50eeb9d3a112306
3 | timeCreated: 1741704964
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/ProjectPreferences.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | using System.ComponentModel;
3 | using Newtonsoft.Json;
4 |
5 | namespace NDream.AirConsole.Editor {
6 | internal class ProjectPreferences {
7 | [DefaultValue("")]
8 | [JsonProperty("pv")]
9 | private string pluginVersion;
10 |
11 | internal string PluginVersion {
12 | get => pluginVersion;
13 | set => pluginVersion = value;
14 | }
15 | }
16 | }
17 | #endif
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/ProjectPreferences.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 41ad7b50ae434296aa94e967f8019544
3 | timeCreated: 1741707366
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/ProjectUpgradeEditor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f913ab96fc1141c58b155117c1193a45
3 | timeCreated: 1741269563
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/SemVerCheck.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | namespace NDream.AirConsole.Editor {
3 | using System;
4 | using System.Text.RegularExpressions;
5 | using UnityEditor.Build;
6 |
7 | internal abstract class SemVerCheck {
8 | ///
9 | /// Validates that Unity matches a required minimum version.
10 | ///
11 | /// The required version. We use Version to form Unity's version string of MAJOR.MINOR.BUILDfREVISION
12 | /// The version string to check, expected in the format "major.minor.patch".
13 | /// True, if the detected version is greater than or equal to the required version.
14 | internal static bool ValidateUnityVersionMinimum(Version requiredVersion, string detectedVersion) {
15 | Version foundVersion = GetMajorMinorPatchFromVersion(detectedVersion);
16 | return foundVersion.CompareTo(requiredVersion) >= 0;
17 | }
18 |
19 | private static Version GetMajorMinorPatchFromVersion(string version) {
20 | Regex versionExtractor = new(@"^(?\d{4})\.(?\d+)\.(?\d+)f(?\d+)$");
21 | Match match = versionExtractor.Match(version);
22 | if (!match.Success) {
23 | throw new BuildFailedException(
24 | "No valid Unity Application version found. Format should be ..f");
25 | }
26 |
27 | return new Version(
28 | int.Parse(match.Groups["Major"].Value),
29 | int.Parse(match.Groups["Minor"].Value),
30 | int.Parse(match.Groups["Build"].Value),
31 | int.Parse(match.Groups["Revision"].Value)
32 | );
33 | }
34 | }
35 | }
36 | #endif
37 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/ProjectMaintenance/SemVerCheck.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 111f68ef338d4a43b5825385fcf7f192
3 | timeCreated: 1759739181
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/SafeAreaTester.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 18aeae825dcd24d6c8223c6903939356
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/SettingWindow.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | using UnityEngine;
3 | using UnityEditor;
4 | using System.Collections;
5 |
6 | namespace NDream.AirConsole.Editor {
7 | public class SettingWindow : EditorWindow {
8 | private GUIStyle styleBlack = new();
9 | private bool groupEnabled = false;
10 | private static Texture2D bg;
11 | private static Texture logo;
12 | private static Texture logoSmall;
13 | private static GUIContent titleInfo;
14 |
15 | public void OnEnable() {
16 | // get images
17 | bg = (Texture2D)Resources.Load("AirConsoleBg");
18 | logo = (Texture)Resources.Load("AirConsoleLogoText");
19 | logoSmall = (Texture)Resources.Load("AirConsoleLogoSmall");
20 | titleInfo = new GUIContent("AirConsole", logoSmall, "AirConsole Settings");
21 |
22 | // setup style for airconsole logo
23 | styleBlack.normal.background = bg;
24 | styleBlack.normal.textColor = Color.white;
25 | styleBlack.margin.top = 5;
26 | styleBlack.padding.right = 5;
27 | }
28 |
29 | [MenuItem("Window/AirConsole/Settings")]
30 | private static void Init() {
31 | SettingWindow window = (SettingWindow)GetWindow(typeof(SettingWindow));
32 | window.titleContent = titleInfo;
33 | window.Show();
34 | }
35 |
36 | private void OnGUI() {
37 | // show logo & version
38 | EditorGUILayout.BeginHorizontal(styleBlack, GUILayout.Height(30));
39 | GUILayout.Label(logo, GUILayout.Width(128), GUILayout.Height(30));
40 | GUILayout.FlexibleSpace();
41 | GUILayout.Label("v" + Settings.VERSION, styleBlack);
42 | EditorGUILayout.EndHorizontal();
43 |
44 | GUILayout.Label("AirConsole Settings", EditorStyles.boldLabel);
45 |
46 | Settings.webSocketPort = EditorGUILayout.IntField("Websocket Port", Settings.webSocketPort, GUILayout.MaxWidth(200));
47 | EditorPrefs.SetInt("webSocketPort", Settings.webSocketPort);
48 |
49 | Settings.webServerPort = EditorGUILayout.IntField("Webserver Port", Settings.webServerPort, GUILayout.MaxWidth(200));
50 | EditorPrefs.SetInt("webServerPort", Settings.webServerPort);
51 |
52 | EditorGUILayout.LabelField("Webserver is running", Extentions.webserver.IsRunning().ToString());
53 |
54 | groupEnabled = EditorGUILayout.BeginToggleGroup("Debug Settings", groupEnabled);
55 |
56 | Settings.debug.info = EditorGUILayout.Toggle("Info", Settings.debug.info);
57 | EditorPrefs.SetBool("debugInfo", Settings.debug.info);
58 |
59 | Settings.debug.warning = EditorGUILayout.Toggle("Warning", Settings.debug.warning);
60 | EditorPrefs.SetBool("debugWarning", Settings.debug.warning);
61 |
62 | Settings.debug.error = EditorGUILayout.Toggle("Error", Settings.debug.error);
63 | EditorPrefs.SetBool("debugError", Settings.debug.error);
64 |
65 | EditorGUILayout.EndToggleGroup();
66 |
67 | EditorGUILayout.BeginHorizontal(styleBlack);
68 |
69 | GUILayout.FlexibleSpace();
70 | if (GUILayout.Button("Reset Settings", GUILayout.MaxWidth(110))) {
71 | Extentions.ResetDefaultValues();
72 | }
73 |
74 | GUILayout.EndHorizontal();
75 | }
76 | }
77 | }
78 | #endif
79 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/SettingWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6bd50cbd56c9f4a40bdf74c061e05d42
3 | timeCreated: 1437826751
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Editor/WebListener.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a7484c3ec7c6b424088f06baa57602bb
3 | timeCreated: 1437574812
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5b58f7c53cb674d6c8fbf7f407793411
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/AirConsole.Runtime.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "AirConsole.Runtime",
3 | "rootNamespace": "NDream.AirConsole",
4 | "references": [
5 | "Unity.TextMeshPro",
6 | "UnityEngine.UI",
7 | "unity-webview"
8 | ],
9 | "includePlatforms": [
10 | "Android",
11 | "Editor",
12 | "WebGL"
13 | ],
14 | "excludePlatforms": [],
15 | "allowUnsafeCode": false,
16 | "overrideReferences": true,
17 | "precompiledReferences": [
18 | "Newtonsoft.Json.dll",
19 | "websocket-sharp.dll"
20 | ],
21 | "autoReferenced": true,
22 | "defineConstraints": [
23 | "UNITY_2022_3_OR_NEWER"
24 | ],
25 | "versionDefines": [],
26 | "noEngineReferences": false
27 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/AirConsole.Runtime.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 85c1bfc4f160746aca7904c58b122e65
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/AirConsole.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e37d83ebce05ad74683fd3228dde9e7d
3 | timeCreated: 1437923318
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {fileID: 2800000, guid: 7880c2c6c2772ca4dbf267146591adf5, type: 3}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/AirConsoleLogger.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b6b58d993a7f48da95496caa6d642f28
3 | timeCreated: 1728905162
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Runtime.CompilerServices;
2 |
3 | [assembly: InternalsVisibleTo("AirConsole.Editor")]
4 | [assembly: InternalsVisibleTo("AirConsole.EditMode.Tests")]
5 | [assembly: InternalsVisibleTo("AirConsole.Editor.Tests")]
6 | [assembly: InternalsVisibleTo("AirConsole.PlayMode.Tests")]
7 |
8 | namespace NDream.AirConsole {
9 | public class AssemblyInfo { }
10 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/AssemblyInfo.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d74a5ce46190453291fb181a2e3f974b
3 | timeCreated: 1741859147
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/DebugLevel.cs:
--------------------------------------------------------------------------------
1 | namespace NDream.AirConsole {
2 | public class DebugLevel {
3 | public const bool DEFAULT_INFO = false;
4 | public const bool DEFAULT_WARNING = true;
5 | public const bool DEFAULT_ERROR = true;
6 | public bool info = true;
7 | public bool warning = true;
8 | public bool error = true;
9 | }
10 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/DebugLevel.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c9ddf324121125748ac451dfd51f1e47
3 | timeCreated: 1437835206
4 | licenseType: Store
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/Plugin.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3c22a8432ace462a88af08fa2ac85b09
3 | timeCreated: 1725538039
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/Plugin/Android.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0c9b31edda074220b4263266f09abdc6
3 | timeCreated: 1725538053
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/Plugin/Android/AndroidUnityUtils.cs:
--------------------------------------------------------------------------------
1 | namespace NDream.AirConsole.Android.Plugin {
2 | // ReSharper disable RedundantUsingDirective
3 | using UnityEngine;
4 |
5 | internal static class AndroidIntentUtils {
6 | public static string GetIntentExtraString(string key, string defaultValue) {
7 | #if !UNITY_ANDROID || UNITY_EDITOR
8 | return defaultValue;
9 | #endif
10 | try {
11 | using (AndroidJavaClass unityPlayer = new("com.unity3d.player.UnityPlayer")) {
12 | AndroidJavaObject currentActivity = unityPlayer.GetStatic("currentActivity");
13 | AndroidJavaObject intent = currentActivity.Call("getIntent");
14 | return intent.Call("getStringExtra", key);
15 | }
16 | } catch (System.Exception e) {
17 | AirConsoleLogger.LogWarning(() => "Error getting intent extra: " + e);
18 | return defaultValue;
19 | }
20 | }
21 |
22 | public static bool GetIntentExtraBool(string key, bool defaultValue) {
23 | #if !UNITY_ANDROID || UNITY_EDITOR
24 | return defaultValue;
25 | #endif
26 | try
27 | {
28 | using (AndroidJavaClass unityPlayer = new("com.unity3d.player.UnityPlayer"))
29 | {
30 | AndroidJavaObject currentActivity = unityPlayer.GetStatic("currentActivity");
31 | AndroidJavaObject intent = currentActivity.Call("getIntent");
32 | return intent.Call("getBooleanExtra", key, defaultValue);
33 | }
34 | }
35 | catch (System.Exception e)
36 | {
37 | AirConsoleLogger.LogWarning(() => "Error getting intent extra: " + e);
38 | return defaultValue;
39 | }
40 | }
41 | }
42 | // ReSharper enable RedundantUsingDirective
43 | }
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/Plugin/Android/AndroidUnityUtils.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7a75ee92f3f047338c60f51df8b5b71f
3 | timeCreated: 1752652799
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/Plugin/Android/GenericUnityPluginCallback.cs:
--------------------------------------------------------------------------------
1 | #if !DISABLE_AIRCONSOLE
2 | using System;
3 | using UnityEngine;
4 |
5 | namespace NDream.AirConsole.Android.Plugin {
6 | internal class GenericUnityPluginCallback : AndroidJavaProxy {
7 | private readonly Action _callback;
8 |
9 | public GenericUnityPluginCallback(Action callback)
10 | : base("com.airconsole.unityandroidlibrary.GenericUnityPluginCallback") {
11 | _callback = callback ?? throw new ArgumentNullException(nameof(callback));
12 | }
13 |
14 | // Implements onExecute, called in Android natively.
15 | // ReSharper disable once InconsistentNaming
16 | public void onExecute(T value) {
17 | if (_callback != null) {
18 | AirConsoleLogger.LogDevelopment(() => $"GenericUnityPluginCallback executed {value}");
19 |
20 | _callback.Invoke(value);
21 | } else {
22 | AirConsoleLogger.LogDevelopment(() => "Execution callback is not assigned.");
23 | }
24 | }
25 | }
26 | }
27 | #endif
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/Plugin/Android/GenericUnityPluginCallback.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8ac0833e27ba4a20996bae4df99c5422
3 | timeCreated: 1747911884
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/Plugin/Android/PluginManager.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 88fc53daa2264dc88139e98d5d91a55a
3 | timeCreated: 1747911986
--------------------------------------------------------------------------------
/Assets/AirConsole/scripts/Runtime/Plugin/Android/UnityAndroidObjectProvider.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Linq;
3 | #if !DISABLE_AIRCONSOLE
4 |
5 | namespace NDream.AirConsole.Android.Plugin {
6 | using UnityEngine;
7 |
8 | internal abstract class UnityAndroidObjectProvider {
9 | // ReSharper disable once MemberCanBePrivate.Global
10 | internal static AndroidJavaObject GetUnityContext() {
11 | if (!AirConsole.IsAndroidRuntime) {
12 | throw new UnityException("UnityAndroidObjectProvider is only supported on Unity Android builds.");
13 | }
14 |
15 | #if UNITY_6000_0_OR_NEWER
16 | return UnityEngine.Android.AndroidApplication.currentContext;
17 | #endif
18 |
19 | AndroidJavaClass unityPlayer = new("com.unity3d.player.UnityPlayer");
20 | return unityPlayer.GetStatic("currentActivity");
21 | }
22 |
23 | // ReSharper disable once MemberCanBePrivate.Global
24 | internal static AndroidJavaObject GetUnityActivity() {
25 | if (!AirConsole.IsAndroidRuntime) {
26 | throw new UnityException("UnityAndroidObjectProvider is only supported on Unity Android builds.");
27 | }
28 |
29 | #if UNITY_6000_0_OR_NEWER
30 | return UnityEngine.Android.AndroidApplication.currentActivity;
31 | #endif
32 |
33 | AndroidJavaClass unityPlayer = new("com.unity3d.player.UnityPlayer");
34 | return unityPlayer.GetStatic("currentActivity");
35 | }
36 |
37 | // ReSharper disable once MemberCanBePrivate.Global
38 | internal static AndroidJavaObject GetInstanceOfClass(string className) {
39 | AndroidJavaObject result = null;
40 | if (AirConsole.IsAndroidRuntime) {
41 | result = new AndroidJavaObject(className, GetUnityActivity());
42 | }
43 |
44 | AirConsoleLogger.LogDevelopment(() =>
45 | $"UnityAndroidObjectProvider.GetInstanceOfClass({className}) successful: {result != null}");
46 |
47 | return result;
48 | }
49 |
50 | // ReSharper disable once MemberCanBePrivate.Global
51 | internal static AndroidJavaObject GetInstanceOfClass(string className, params object[] parameters) {
52 | AndroidJavaObject result = null;
53 | if (AirConsole.IsAndroidRuntime) {
54 | IEnumerable