Unity builder v4 Parity Update (#246)
- Updated activation strategy to align with builder strategy for more stable activation with retry logic - Added `containerRegistryImageVersion` and `containerRegistryRepository` for improved custom image support - Added `runAsHostUser` to fix self-hosted runner issues - Scripts folder cleanup - Added error/warning annotations for activation issues - Improved serial masking - Image environment factory addition and docker refactoringpull/254/head v4.1.0
parent
c80d9094f5
commit
ce074787fb
|
@ -2,10 +2,27 @@
|
||||||
|
|
||||||
- ...
|
- ...
|
||||||
|
|
||||||
|
#### Related Issues
|
||||||
|
|
||||||
|
- ...
|
||||||
|
|
||||||
|
#### Related PRs
|
||||||
|
|
||||||
|
- ...
|
||||||
|
|
||||||
|
#### Successful Workflow Run Link
|
||||||
|
|
||||||
|
PRs don't have access to secrets so you will need to provide a link to a successful run
|
||||||
|
of the workflows from your own repo.
|
||||||
|
|
||||||
|
- ...
|
||||||
|
|
||||||
#### Checklist
|
#### Checklist
|
||||||
|
|
||||||
<!-- please check all items and add your own -->
|
<!-- please check all items and add your own -->
|
||||||
|
|
||||||
- [x] Read the contribution [guide](../CONTRIBUTING.md) and accept the [code](../CODE_OF_CONDUCT.md) of conduct
|
- [x] Read the contribution [guide](../CONTRIBUTING.md) and accept the [code](../CODE_OF_CONDUCT.md) of conduct
|
||||||
|
- [ ] Docs (If new inputs or outputs have been added or changes to behavior that should be documented. Please make a PR
|
||||||
|
in the [documentation repo](https://github.com/game-ci/documentation))
|
||||||
- [ ] Readme (updated or not needed)
|
- [ ] Readme (updated or not needed)
|
||||||
- [ ] Tests (added, updated or not needed)
|
- [ ] Tests (added, updated or not needed)
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
name: Actions 😎
|
name: Actions 😎
|
||||||
on:
|
on:
|
||||||
push: { branches: [main] }
|
push:
|
||||||
pull_request:
|
|
||||||
paths-ignore:
|
concurrency:
|
||||||
- '.github/**'
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
env:
|
env:
|
||||||
UNITY_LICENSE: "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root>\n <License id=\"Terms\">\n <MachineBindings>\n <Binding Key=\"1\" Value=\"576562626572264761624c65526f7578\"/>\n <Binding Key=\"2\" Value=\"576562626572264761624c65526f7578\"/>\n </MachineBindings>\n <MachineID Value=\"D7nTUnjNAmtsUMcnoyrqkgIbYdM=\"/>\n <SerialHash Value=\"2033b8ac3e6faa3742ca9f0bfae44d18f2a96b80\"/>\n <Features>\n <Feature Value=\"33\"/>\n <Feature Value=\"1\"/>\n <Feature Value=\"12\"/>\n <Feature Value=\"2\"/>\n <Feature Value=\"24\"/>\n <Feature Value=\"3\"/>\n <Feature Value=\"36\"/>\n <Feature Value=\"17\"/>\n <Feature Value=\"19\"/>\n <Feature Value=\"62\"/>\n </Features>\n <DeveloperData Value=\"AQAAAEY0LUJHUlgtWEQ0RS1aQ1dWLUM1SlctR0RIQg==\"/>\n <SerialMasked Value=\"F4-BGRX-XD4E-ZCWV-C5JW-XXXX\"/>\n <StartDate Value=\"2021-02-08T00:00:00\"/>\n <UpdateDate Value=\"2021-02-09T00:34:57\"/>\n <InitialActivationDate Value=\"2021-02-08T00:34:56\"/>\n <LicenseVersion Value=\"6.x\"/>\n <ClientProvidedVersion Value=\"2018.4.30f1\"/>\n <AlwaysOnline Value=\"false\"/>\n <Entitlements>\n <Entitlement Ns=\"unity_editor\" Tag=\"UnityPersonal\" Type=\"EDITOR\" ValidTo=\"9999-12-31T00:00:00\"/>\n <Entitlement Ns=\"unity_editor\" Tag=\"DarkSkin\" Type=\"EDITOR_FEATURE\" ValidTo=\"9999-12-31T00:00:00\"/>\n </Entitlements>\n </License>\n<Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\"><SignedInfo><CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments\"/><SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/><Reference URI=\"#Terms\"><Transforms><Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/></Transforms><DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><DigestValue>m0Db8UK+ktnOLJBtHybkfetpcKo=</DigestValue></Reference></SignedInfo><SignatureValue>o/pUbSQAukz7+ZYAWhnA0AJbIlyyCPL7bKVEM2lVqbrXt7cyey+umkCXamuOgsWPVUKBMkXtMH8L\n5etLmD0getWIhTGhzOnDCk+gtIPfL4jMo9tkEuOCROQAXCci23VFscKcrkB+3X6h4wEOtA2APhOY\nB+wvC794o8/82ffjP79aVAi57rp3Wmzx+9pe9yMwoJuljAy2sc2tIMgdQGWVmOGBpQm3JqsidyzI\nJWG2kjnc7pDXK9pwYzXoKiqUqqrut90d+kQqRyv7MSZXR50HFqD/LI69h68b7P8Bjo3bPXOhNXGR\n9YCoemH6EkfCJxp2gIjzjWW+l2Hj2EsFQi8YXw==</SignatureValue></Signature></root>"
|
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
|
||||||
|
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
|
||||||
|
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
tests:
|
tests:
|
||||||
|
@ -32,7 +35,9 @@ jobs:
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-project-with-correct-tests
|
- unity-project-with-correct-tests
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
testMode:
|
testMode:
|
||||||
- playmode
|
- playmode
|
||||||
- editmode
|
- editmode
|
||||||
|
@ -78,7 +83,9 @@ jobs:
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-project-with-correct-tests
|
- unity-project-with-correct-tests
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
steps:
|
steps:
|
||||||
###########################
|
###########################
|
||||||
# Checkout #
|
# Checkout #
|
||||||
|
@ -132,7 +139,9 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-project-with-correct-tests
|
- unity-project-with-correct-tests
|
||||||
steps:
|
steps:
|
||||||
|
@ -189,7 +198,9 @@ jobs:
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-project-with-correct-tests
|
- unity-project-with-correct-tests
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
steps:
|
steps:
|
||||||
###########################
|
###########################
|
||||||
# Checkout #
|
# Checkout #
|
||||||
|
@ -244,7 +255,9 @@ jobs:
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-project-with-correct-tests
|
- unity-project-with-correct-tests
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
steps:
|
steps:
|
||||||
###########################
|
###########################
|
||||||
# Checkout #
|
# Checkout #
|
||||||
|
@ -291,7 +304,9 @@ jobs:
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-project-with-correct-tests
|
- unity-project-with-correct-tests
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1 # Only 2019.4+ docker images contain the IL2CPP backend installed.
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
steps:
|
steps:
|
||||||
###########################
|
###########################
|
||||||
# Checkout #
|
# Checkout #
|
||||||
|
@ -343,7 +358,9 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-project-with-correct-tests
|
- unity-project-with-correct-tests
|
||||||
steps:
|
steps:
|
||||||
|
@ -409,7 +426,9 @@ jobs:
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-package-with-correct-tests/com.example.testpackage
|
- unity-package-with-correct-tests/com.example.testpackage
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
testMode:
|
testMode:
|
||||||
- playmode
|
- playmode
|
||||||
- editmode
|
- editmode
|
||||||
|
@ -448,7 +467,9 @@ jobs:
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-package-with-correct-tests/com.example.testpackage
|
- unity-package-with-correct-tests/com.example.testpackage
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
steps:
|
steps:
|
||||||
###########################
|
###########################
|
||||||
# Checkout #
|
# Checkout #
|
||||||
|
@ -492,7 +513,9 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-package-with-correct-tests/com.example.testpackage
|
- unity-package-with-correct-tests/com.example.testpackage
|
||||||
steps:
|
steps:
|
||||||
|
@ -540,7 +563,9 @@ jobs:
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-package-with-correct-tests/com.example.testpackage
|
- unity-package-with-correct-tests/com.example.testpackage
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
steps:
|
steps:
|
||||||
###########################
|
###########################
|
||||||
# Checkout #
|
# Checkout #
|
||||||
|
@ -584,7 +609,9 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
unityVersion:
|
unityVersion:
|
||||||
- 2022.3.7f1
|
- 2022.3.13f1
|
||||||
|
- 2023.1.19f1
|
||||||
|
- 2023.2.2f1
|
||||||
projectPath:
|
projectPath:
|
||||||
- unity-package-with-correct-tests/com.example.testpackage
|
- unity-package-with-correct-tests/com.example.testpackage
|
||||||
steps:
|
steps:
|
||||||
|
|
16
action.yml
16
action.yml
|
@ -82,6 +82,20 @@ inputs:
|
||||||
required: false
|
required: false
|
||||||
default: ''
|
default: ''
|
||||||
description: 'Url to a unity license server for acquiring floating licenses.'
|
description: 'Url to a unity license server for acquiring floating licenses.'
|
||||||
|
containerRegistryRepository:
|
||||||
|
required: false
|
||||||
|
default: 'unityci/editor'
|
||||||
|
description: 'Container registry and repository to pull image from. Only applicable if customImage is not set.'
|
||||||
|
containerRegistryImageVersion:
|
||||||
|
required: false
|
||||||
|
default: '3'
|
||||||
|
description: 'Container registry image version. Only applicable if customImage is not set.'
|
||||||
|
runAsHostUser:
|
||||||
|
required: false
|
||||||
|
default: 'false'
|
||||||
|
description:
|
||||||
|
'Whether to run as a user that matches the host system or the default root container user. Only applicable to
|
||||||
|
Linux hosts and containers. This is useful for fixing permission errors on Self-Hosted runners.'
|
||||||
outputs:
|
outputs:
|
||||||
artifactsPath:
|
artifactsPath:
|
||||||
description: 'Path where the artifacts are stored.'
|
description: 'Path where the artifacts are stored.'
|
||||||
|
@ -91,6 +105,6 @@ branding:
|
||||||
icon: 'box'
|
icon: 'box'
|
||||||
color: 'gray-dark'
|
color: 'gray-dark'
|
||||||
runs:
|
runs:
|
||||||
using: 'node16'
|
using: 'node20'
|
||||||
main: 'dist/main.js'
|
main: 'dist/main.js'
|
||||||
post: 'dist/post.js'
|
post: 'dist/post.js'
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
Library/
|
||||||
|
[Tt]emp/
|
||||||
|
[Oo]bj/
|
||||||
|
[Bb]uild/
|
||||||
|
[Bb]uilds/
|
||||||
|
[Ll]ogs/
|
||||||
|
|
||||||
|
# Uncomment this line if you wish to ignore the asset store tools plugin
|
||||||
|
# [Aa]ssets/AssetStoreTools*
|
||||||
|
|
||||||
|
# IDEs
|
||||||
|
.vs/
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# Gradle cache directory
|
||||||
|
.gradle/
|
||||||
|
|
||||||
|
# Autogenerated VS/MD/Consulo solution and project files
|
||||||
|
ExportedObj/
|
||||||
|
.consulo/
|
||||||
|
*.csproj
|
||||||
|
*.unityproj
|
||||||
|
*.sln
|
||||||
|
*.suo
|
||||||
|
*.tmp
|
||||||
|
*.user
|
||||||
|
*.userprefs
|
||||||
|
*.pidb
|
||||||
|
*.booproj
|
||||||
|
*.svd
|
||||||
|
*.pdb
|
||||||
|
*.mdb
|
||||||
|
*.opendb
|
||||||
|
*.VC.db
|
||||||
|
|
||||||
|
# Unity3D generated meta files
|
||||||
|
*.pidb.meta
|
||||||
|
*.pdb.meta
|
||||||
|
*.mdb.meta
|
||||||
|
|
||||||
|
# Unity3D generated file on crash reports
|
||||||
|
sysinfo.txt
|
||||||
|
|
||||||
|
# Builds
|
||||||
|
*.apk
|
||||||
|
*.unitypackage
|
||||||
|
|
||||||
|
# Crashlytics generated file
|
||||||
|
crashlytics-build.properties
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 131a6b21c8605f84396be9f6751fb6e3
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,208 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!29 &1
|
||||||
|
OcclusionCullingSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_OcclusionBakeSettings:
|
||||||
|
smallestOccluder: 5
|
||||||
|
smallestHole: 0.25
|
||||||
|
backfaceThreshold: 100
|
||||||
|
m_SceneGUID: 00000000000000000000000000000000
|
||||||
|
m_OcclusionCullingData: {fileID: 0}
|
||||||
|
--- !u!104 &2
|
||||||
|
RenderSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 9
|
||||||
|
m_Fog: 0
|
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
m_FogMode: 3
|
||||||
|
m_FogDensity: 0.01
|
||||||
|
m_LinearFogStart: 0
|
||||||
|
m_LinearFogEnd: 300
|
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||||
|
m_AmbientIntensity: 1
|
||||||
|
m_AmbientMode: 3
|
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
|
m_SkyboxMaterial: {fileID: 0}
|
||||||
|
m_HaloStrength: 0.5
|
||||||
|
m_FlareStrength: 1
|
||||||
|
m_FlareFadeSpeed: 3
|
||||||
|
m_HaloTexture: {fileID: 0}
|
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_DefaultReflectionMode: 0
|
||||||
|
m_DefaultReflectionResolution: 128
|
||||||
|
m_ReflectionBounces: 1
|
||||||
|
m_ReflectionIntensity: 1
|
||||||
|
m_CustomReflection: {fileID: 0}
|
||||||
|
m_Sun: {fileID: 0}
|
||||||
|
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
m_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 12
|
||||||
|
m_GIWorkflowMode: 1
|
||||||
|
m_GISettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_EnvironmentLightingMode: 0
|
||||||
|
m_EnableBakedLightmaps: 0
|
||||||
|
m_EnableRealtimeLightmaps: 0
|
||||||
|
m_LightmapEditorSettings:
|
||||||
|
serializedVersion: 12
|
||||||
|
m_Resolution: 2
|
||||||
|
m_BakeResolution: 40
|
||||||
|
m_AtlasSize: 1024
|
||||||
|
m_AO: 0
|
||||||
|
m_AOMaxDistance: 1
|
||||||
|
m_CompAOExponent: 1
|
||||||
|
m_CompAOExponentDirect: 0
|
||||||
|
m_ExtractAmbientOcclusion: 0
|
||||||
|
m_Padding: 2
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_LightmapsBakeMode: 1
|
||||||
|
m_TextureCompression: 1
|
||||||
|
m_FinalGather: 0
|
||||||
|
m_FinalGatherFiltering: 1
|
||||||
|
m_FinalGatherRayCount: 256
|
||||||
|
m_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 0
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 500
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 500
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 2
|
||||||
|
m_PVRDenoiserTypeDirect: 0
|
||||||
|
m_PVRDenoiserTypeIndirect: 0
|
||||||
|
m_PVRDenoiserTypeAO: 0
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 0
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 0}
|
||||||
|
m_LightingSettings: {fileID: 0}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.4
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
accuratePlacement: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &519420028
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 519420032}
|
||||||
|
- component: {fileID: 519420031}
|
||||||
|
- component: {fileID: 519420029}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Main Camera
|
||||||
|
m_TagString: MainCamera
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!81 &519420029
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 519420028}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &519420031
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 519420028}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 2
|
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_NormalizedViewPortRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
near clip plane: 0.3
|
||||||
|
far clip plane: 1000
|
||||||
|
field of view: 60
|
||||||
|
orthographic: 1
|
||||||
|
orthographic size: 5
|
||||||
|
m_Depth: -1
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingPath: -1
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_TargetEye: 0
|
||||||
|
m_HDR: 1
|
||||||
|
m_AllowMSAA: 0
|
||||||
|
m_AllowDynamicResolution: 0
|
||||||
|
m_ForceIntoRT: 0
|
||||||
|
m_OcclusionCulling: 0
|
||||||
|
m_StereoConvergence: 10
|
||||||
|
m_StereoSeparation: 0.022
|
||||||
|
--- !u!4 &519420032
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 519420028}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: -10}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2cda990e2423bbf4892e6590ba056729
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!11 &1
|
||||||
|
AudioManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Volume: 1
|
||||||
|
Rolloff Scale: 1
|
||||||
|
Doppler Factor: 1
|
||||||
|
Default Speaker Mode: 2
|
||||||
|
m_SampleRate: 0
|
||||||
|
m_DSPBufferSize: 1024
|
||||||
|
m_VirtualVoiceCount: 512
|
||||||
|
m_RealVoiceCount: 32
|
||||||
|
m_SpatializerPlugin:
|
||||||
|
m_AmbisonicDecoderPlugin:
|
||||||
|
m_DisableAudio: 0
|
||||||
|
m_VirtualizeEffects: 1
|
||||||
|
m_RequestedDSPBufferSize: 0
|
|
@ -0,0 +1,6 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!236 &1
|
||||||
|
ClusterInputManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Inputs: []
|
|
@ -0,0 +1,37 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!55 &1
|
||||||
|
PhysicsManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 13
|
||||||
|
m_Gravity: {x: 0, y: -9.81, z: 0}
|
||||||
|
m_DefaultMaterial: {fileID: 0}
|
||||||
|
m_BounceThreshold: 2
|
||||||
|
m_DefaultMaxDepenetrationVelocity: 10
|
||||||
|
m_SleepThreshold: 0.005
|
||||||
|
m_DefaultContactOffset: 0.01
|
||||||
|
m_DefaultSolverIterations: 6
|
||||||
|
m_DefaultSolverVelocityIterations: 1
|
||||||
|
m_QueriesHitBackfaces: 0
|
||||||
|
m_QueriesHitTriggers: 1
|
||||||
|
m_EnableAdaptiveForce: 0
|
||||||
|
m_ClothInterCollisionDistance: 0.1
|
||||||
|
m_ClothInterCollisionStiffness: 0.2
|
||||||
|
m_ContactsGeneration: 1
|
||||||
|
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
m_AutoSimulation: 1
|
||||||
|
m_AutoSyncTransforms: 0
|
||||||
|
m_ReuseCollisionCallbacks: 1
|
||||||
|
m_ClothInterCollisionSettingsToggle: 0
|
||||||
|
m_ClothGravity: {x: 0, y: -9.81, z: 0}
|
||||||
|
m_ContactPairsMode: 0
|
||||||
|
m_BroadphaseType: 0
|
||||||
|
m_WorldBounds:
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
m_Extent: {x: 250, y: 250, z: 250}
|
||||||
|
m_WorldSubdivisions: 8
|
||||||
|
m_FrictionType: 0
|
||||||
|
m_EnableEnhancedDeterminism: 0
|
||||||
|
m_EnableUnifiedHeightmaps: 1
|
||||||
|
m_SolverType: 0
|
||||||
|
m_DefaultMaxAngularSpeed: 50
|
|
@ -0,0 +1,11 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1045 &1
|
||||||
|
EditorBuildSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Scenes:
|
||||||
|
- enabled: 1
|
||||||
|
path: Assets/Scenes/SampleScene.unity
|
||||||
|
guid: 2cda990e2423bbf4892e6590ba056729
|
||||||
|
m_configObjects: {}
|
|
@ -0,0 +1,40 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!159 &1
|
||||||
|
EditorSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 11
|
||||||
|
m_SerializationMode: 2
|
||||||
|
m_LineEndingsForNewScripts: 0
|
||||||
|
m_DefaultBehaviorMode: 1
|
||||||
|
m_PrefabRegularEnvironment: {fileID: 0}
|
||||||
|
m_PrefabUIEnvironment: {fileID: 0}
|
||||||
|
m_SpritePackerMode: 4
|
||||||
|
m_SpritePackerPaddingPower: 1
|
||||||
|
m_EtcTextureCompressorBehavior: 1
|
||||||
|
m_EtcTextureFastCompressor: 1
|
||||||
|
m_EtcTextureNormalCompressor: 2
|
||||||
|
m_EtcTextureBestCompressor: 4
|
||||||
|
m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref;rsp
|
||||||
|
m_ProjectGenerationRootNamespace:
|
||||||
|
m_EnableTextureStreamingInEditMode: 1
|
||||||
|
m_EnableTextureStreamingInPlayMode: 1
|
||||||
|
m_AsyncShaderCompilation: 1
|
||||||
|
m_CachingShaderPreprocessor: 1
|
||||||
|
m_PrefabModeAllowAutoSave: 1
|
||||||
|
m_EnterPlayModeOptionsEnabled: 0
|
||||||
|
m_EnterPlayModeOptions: 3
|
||||||
|
m_GameObjectNamingDigits: 1
|
||||||
|
m_GameObjectNamingScheme: 0
|
||||||
|
m_AssetNamingUsesSpace: 1
|
||||||
|
m_UseLegacyProbeSampleCount: 0
|
||||||
|
m_SerializeInlineMappingsOnOneLine: 1
|
||||||
|
m_DisableCookiesInLightmapper: 1
|
||||||
|
m_AssetPipelineMode: 1
|
||||||
|
m_CacheServerMode: 0
|
||||||
|
m_CacheServerEndpoint:
|
||||||
|
m_CacheServerNamespacePrefix: default
|
||||||
|
m_CacheServerEnableDownload: 1
|
||||||
|
m_CacheServerEnableUpload: 1
|
||||||
|
m_CacheServerEnableAuth: 0
|
||||||
|
m_CacheServerEnableTls: 0
|
|
@ -0,0 +1,64 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!30 &1
|
||||||
|
GraphicsSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 13
|
||||||
|
m_Deferred:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_DeferredReflections:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_ScreenSpaceShadows:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LegacyDeferred:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_DepthNormals:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_MotionVectors:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LightHalo:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_LensFlare:
|
||||||
|
m_Mode: 1
|
||||||
|
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_VideoShadersIncludeMode: 2
|
||||||
|
m_AlwaysIncludedShaders:
|
||||||
|
- {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
- {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_PreloadedShaders: []
|
||||||
|
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_CustomRenderPipeline: {fileID: 0}
|
||||||
|
m_TransparencySortMode: 0
|
||||||
|
m_TransparencySortAxis: {x: 0, y: 0, z: 1}
|
||||||
|
m_DefaultRenderingPath: 1
|
||||||
|
m_DefaultMobileRenderingPath: 1
|
||||||
|
m_TierSettings: []
|
||||||
|
m_LightmapStripping: 0
|
||||||
|
m_FogStripping: 0
|
||||||
|
m_InstancingStripping: 0
|
||||||
|
m_LightmapKeepPlain: 1
|
||||||
|
m_LightmapKeepDirCombined: 1
|
||||||
|
m_LightmapKeepDynamicPlain: 1
|
||||||
|
m_LightmapKeepDynamicDirCombined: 1
|
||||||
|
m_LightmapKeepShadowMask: 1
|
||||||
|
m_LightmapKeepSubtractive: 1
|
||||||
|
m_FogKeepLinear: 1
|
||||||
|
m_FogKeepExp: 1
|
||||||
|
m_FogKeepExp2: 1
|
||||||
|
m_AlbedoSwatchInfos: []
|
||||||
|
m_LightsUseLinearIntensity: 0
|
||||||
|
m_LightsUseColorTemperature: 0
|
||||||
|
m_DefaultRenderingLayerMask: 1
|
||||||
|
m_LogWhenShaderIsCompiled: 0
|
|
@ -0,0 +1,487 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!13 &1
|
||||||
|
InputManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Axes:
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: left
|
||||||
|
positiveButton: right
|
||||||
|
altNegativeButton: a
|
||||||
|
altPositiveButton: d
|
||||||
|
gravity: 3
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 3
|
||||||
|
snap: 1
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: down
|
||||||
|
positiveButton: up
|
||||||
|
altNegativeButton: s
|
||||||
|
altPositiveButton: w
|
||||||
|
gravity: 3
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 3
|
||||||
|
snap: 1
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire1
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left ctrl
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: mouse 0
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire2
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left alt
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: mouse 1
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire3
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left shift
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: mouse 2
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Jump
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: space
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Mouse X
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0.1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 1
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Mouse Y
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0.1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 1
|
||||||
|
axis: 1
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Mouse ScrollWheel
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0.1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 1
|
||||||
|
axis: 2
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0.19
|
||||||
|
sensitivity: 1
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 2
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton:
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 0
|
||||||
|
dead: 0.19
|
||||||
|
sensitivity: 1
|
||||||
|
snap: 0
|
||||||
|
invert: 1
|
||||||
|
type: 2
|
||||||
|
axis: 1
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire1
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 0
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire2
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 1
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Fire3
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 2
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Jump
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: joystick button 3
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Submit
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: return
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 0
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Submit
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: enter
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: space
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Cancel
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: escape
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 1
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Enable Debug Button 1
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left ctrl
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 8
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Enable Debug Button 2
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: backspace
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 9
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Reset
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left alt
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 1
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Next
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: page down
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 5
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Previous
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: page up
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 4
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Validate
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: return
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 0
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Persistent
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: right shift
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 2
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Multiplier
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton:
|
||||||
|
positiveButton: left shift
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton: joystick button 3
|
||||||
|
gravity: 0
|
||||||
|
dead: 0
|
||||||
|
sensitivity: 0
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: left
|
||||||
|
positiveButton: right
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: down
|
||||||
|
positiveButton: up
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 0
|
||||||
|
axis: 0
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Vertical
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: down
|
||||||
|
positiveButton: up
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 2
|
||||||
|
axis: 6
|
||||||
|
joyNum: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
m_Name: Debug Horizontal
|
||||||
|
descriptiveName:
|
||||||
|
descriptiveNegativeName:
|
||||||
|
negativeButton: left
|
||||||
|
positiveButton: right
|
||||||
|
altNegativeButton:
|
||||||
|
altPositiveButton:
|
||||||
|
gravity: 1000
|
||||||
|
dead: 0.001
|
||||||
|
sensitivity: 1000
|
||||||
|
snap: 0
|
||||||
|
invert: 0
|
||||||
|
type: 2
|
||||||
|
axis: 5
|
||||||
|
joyNum: 0
|
|
@ -0,0 +1,35 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!387306366 &1
|
||||||
|
MemorySettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_EditorMemorySettings:
|
||||||
|
m_MainAllocatorBlockSize: -1
|
||||||
|
m_ThreadAllocatorBlockSize: -1
|
||||||
|
m_MainGfxBlockSize: -1
|
||||||
|
m_ThreadGfxBlockSize: -1
|
||||||
|
m_CacheBlockSize: -1
|
||||||
|
m_TypetreeBlockSize: -1
|
||||||
|
m_ProfilerBlockSize: -1
|
||||||
|
m_ProfilerEditorBlockSize: -1
|
||||||
|
m_BucketAllocatorGranularity: -1
|
||||||
|
m_BucketAllocatorBucketsCount: -1
|
||||||
|
m_BucketAllocatorBlockSize: -1
|
||||||
|
m_BucketAllocatorBlockCount: -1
|
||||||
|
m_ProfilerBucketAllocatorGranularity: -1
|
||||||
|
m_ProfilerBucketAllocatorBucketsCount: -1
|
||||||
|
m_ProfilerBucketAllocatorBlockSize: -1
|
||||||
|
m_ProfilerBucketAllocatorBlockCount: -1
|
||||||
|
m_TempAllocatorSizeMain: -1
|
||||||
|
m_JobTempAllocatorBlockSize: -1
|
||||||
|
m_BackgroundJobTempAllocatorBlockSize: -1
|
||||||
|
m_JobTempAllocatorReducedBlockSize: -1
|
||||||
|
m_TempAllocatorSizeGIBakingWorker: -1
|
||||||
|
m_TempAllocatorSizeNavMeshWorker: -1
|
||||||
|
m_TempAllocatorSizeAudioWorker: -1
|
||||||
|
m_TempAllocatorSizeCloudWorker: -1
|
||||||
|
m_TempAllocatorSizeGfx: -1
|
||||||
|
m_TempAllocatorSizeJobWorker: -1
|
||||||
|
m_TempAllocatorSizeBackgroundWorker: -1
|
||||||
|
m_TempAllocatorSizePreloadManager: -1
|
||||||
|
m_PlatformMemorySettings: {}
|
|
@ -0,0 +1,93 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!126 &1
|
||||||
|
NavMeshProjectSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
areas:
|
||||||
|
- name: Walkable
|
||||||
|
cost: 1
|
||||||
|
- name: Not Walkable
|
||||||
|
cost: 1
|
||||||
|
- name: Jump
|
||||||
|
cost: 2
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
- name:
|
||||||
|
cost: 1
|
||||||
|
m_LastAgentTypeID: -887442657
|
||||||
|
m_Settings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.75
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
accuratePlacement: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_SettingNames:
|
||||||
|
- Humanoid
|
|
@ -0,0 +1,8 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!149 &1
|
||||||
|
NetworkManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_DebugLevel: 0
|
||||||
|
m_Sendrate: 15
|
||||||
|
m_AssetToPrefab: {}
|
|
@ -0,0 +1,44 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &1
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 61
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_EnablePreReleasePackages: 0
|
||||||
|
m_EnablePackageDependencies: 0
|
||||||
|
m_AdvancedSettingsExpanded: 1
|
||||||
|
m_ScopedRegistriesSettingsExpanded: 1
|
||||||
|
m_SeeAllPackageVersions: 0
|
||||||
|
oneTimeWarningShown: 0
|
||||||
|
m_Registries:
|
||||||
|
- m_Id: main
|
||||||
|
m_Name:
|
||||||
|
m_Url: https://packages.unity.com
|
||||||
|
m_Scopes: []
|
||||||
|
m_IsDefault: 1
|
||||||
|
m_Capabilities: 7
|
||||||
|
m_UserSelectedRegistryName:
|
||||||
|
m_UserAddingNewScopedRegistry: 0
|
||||||
|
m_RegistryInfoDraft:
|
||||||
|
m_ErrorMessage:
|
||||||
|
m_Original:
|
||||||
|
m_Id:
|
||||||
|
m_Name:
|
||||||
|
m_Url:
|
||||||
|
m_Scopes: []
|
||||||
|
m_IsDefault: 0
|
||||||
|
m_Capabilities: 0
|
||||||
|
m_Modified: 0
|
||||||
|
m_Name:
|
||||||
|
m_Url:
|
||||||
|
m_Scopes:
|
||||||
|
-
|
||||||
|
m_SelectedScopeIndex: 0
|
|
@ -0,0 +1,56 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!19 &1
|
||||||
|
Physics2DSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 5
|
||||||
|
m_Gravity: {x: 0, y: -9.81}
|
||||||
|
m_DefaultMaterial: {fileID: 0}
|
||||||
|
m_VelocityIterations: 8
|
||||||
|
m_PositionIterations: 3
|
||||||
|
m_VelocityThreshold: 1
|
||||||
|
m_MaxLinearCorrection: 0.2
|
||||||
|
m_MaxAngularCorrection: 8
|
||||||
|
m_MaxTranslationSpeed: 100
|
||||||
|
m_MaxRotationSpeed: 360
|
||||||
|
m_BaumgarteScale: 0.2
|
||||||
|
m_BaumgarteTimeOfImpactScale: 0.75
|
||||||
|
m_TimeToSleep: 0.5
|
||||||
|
m_LinearSleepTolerance: 0.01
|
||||||
|
m_AngularSleepTolerance: 2
|
||||||
|
m_DefaultContactOffset: 0.01
|
||||||
|
m_JobOptions:
|
||||||
|
serializedVersion: 2
|
||||||
|
useMultithreading: 0
|
||||||
|
useConsistencySorting: 0
|
||||||
|
m_InterpolationPosesPerJob: 100
|
||||||
|
m_NewContactsPerJob: 30
|
||||||
|
m_CollideContactsPerJob: 100
|
||||||
|
m_ClearFlagsPerJob: 200
|
||||||
|
m_ClearBodyForcesPerJob: 200
|
||||||
|
m_SyncDiscreteFixturesPerJob: 50
|
||||||
|
m_SyncContinuousFixturesPerJob: 50
|
||||||
|
m_FindNearestContactsPerJob: 100
|
||||||
|
m_UpdateTriggerContactsPerJob: 100
|
||||||
|
m_IslandSolverCostThreshold: 100
|
||||||
|
m_IslandSolverBodyCostScale: 1
|
||||||
|
m_IslandSolverContactCostScale: 10
|
||||||
|
m_IslandSolverJointCostScale: 10
|
||||||
|
m_IslandSolverBodiesPerJob: 50
|
||||||
|
m_IslandSolverContactsPerJob: 50
|
||||||
|
m_SimulationMode: 0
|
||||||
|
m_QueriesHitTriggers: 1
|
||||||
|
m_QueriesStartInColliders: 1
|
||||||
|
m_CallbacksOnDisable: 1
|
||||||
|
m_ReuseCollisionCallbacks: 1
|
||||||
|
m_AutoSyncTransforms: 0
|
||||||
|
m_AlwaysShowColliders: 0
|
||||||
|
m_ShowColliderSleep: 1
|
||||||
|
m_ShowColliderContacts: 0
|
||||||
|
m_ShowColliderAABB: 0
|
||||||
|
m_ContactArrowScale: 0.2
|
||||||
|
m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
|
||||||
|
m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
|
||||||
|
m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
|
||||||
|
m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
|
||||||
|
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
|
@ -0,0 +1,7 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1386491679 &1
|
||||||
|
PresetManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_DefaultPresets: {}
|
|
@ -0,0 +1,665 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!129 &1
|
||||||
|
PlayerSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 23
|
||||||
|
productGUID: 034a658b4a2c341fbb4fcd6299d7141d
|
||||||
|
AndroidProfiler: 0
|
||||||
|
AndroidFilterTouchesWhenObscured: 0
|
||||||
|
AndroidEnableSustainedPerformanceMode: 0
|
||||||
|
defaultScreenOrientation: 4
|
||||||
|
targetDevice: 2
|
||||||
|
useOnDemandResources: 0
|
||||||
|
accelerometerFrequency: 60
|
||||||
|
companyName: DefaultCompany
|
||||||
|
productName: BlankProject
|
||||||
|
defaultCursor: {fileID: 0}
|
||||||
|
cursorHotspot: {x: 0, y: 0}
|
||||||
|
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
|
||||||
|
m_ShowUnitySplashScreen: 1
|
||||||
|
m_ShowUnitySplashLogo: 1
|
||||||
|
m_SplashScreenOverlayOpacity: 1
|
||||||
|
m_SplashScreenAnimation: 1
|
||||||
|
m_SplashScreenLogoStyle: 1
|
||||||
|
m_SplashScreenDrawMode: 0
|
||||||
|
m_SplashScreenBackgroundAnimationZoom: 1
|
||||||
|
m_SplashScreenLogoAnimationZoom: 1
|
||||||
|
m_SplashScreenBackgroundLandscapeAspect: 1
|
||||||
|
m_SplashScreenBackgroundPortraitAspect: 1
|
||||||
|
m_SplashScreenBackgroundLandscapeUvs:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
m_SplashScreenBackgroundPortraitUvs:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
m_SplashScreenLogos: []
|
||||||
|
m_VirtualRealitySplashScreen: {fileID: 0}
|
||||||
|
m_HolographicTrackingLossScreen: {fileID: 0}
|
||||||
|
defaultScreenWidth: 1920
|
||||||
|
defaultScreenHeight: 1080
|
||||||
|
defaultScreenWidthWeb: 960
|
||||||
|
defaultScreenHeightWeb: 600
|
||||||
|
m_StereoRenderingPath: 0
|
||||||
|
m_ActiveColorSpace: 0
|
||||||
|
m_MTRendering: 1
|
||||||
|
mipStripping: 0
|
||||||
|
numberOfMipsStripped: 0
|
||||||
|
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
|
||||||
|
iosShowActivityIndicatorOnLoading: -1
|
||||||
|
androidShowActivityIndicatorOnLoading: -1
|
||||||
|
iosUseCustomAppBackgroundBehavior: 0
|
||||||
|
iosAllowHTTPDownload: 1
|
||||||
|
allowedAutorotateToPortrait: 1
|
||||||
|
allowedAutorotateToPortraitUpsideDown: 1
|
||||||
|
allowedAutorotateToLandscapeRight: 1
|
||||||
|
allowedAutorotateToLandscapeLeft: 1
|
||||||
|
useOSAutorotation: 1
|
||||||
|
use32BitDisplayBuffer: 1
|
||||||
|
preserveFramebufferAlpha: 0
|
||||||
|
disableDepthAndStencilBuffers: 0
|
||||||
|
androidStartInFullscreen: 1
|
||||||
|
androidRenderOutsideSafeArea: 1
|
||||||
|
androidUseSwappy: 1
|
||||||
|
androidBlitType: 0
|
||||||
|
androidResizableWindow: 0
|
||||||
|
androidDefaultWindowWidth: 1920
|
||||||
|
androidDefaultWindowHeight: 1080
|
||||||
|
androidMinimumWindowWidth: 400
|
||||||
|
androidMinimumWindowHeight: 300
|
||||||
|
androidFullscreenMode: 1
|
||||||
|
defaultIsNativeResolution: 1
|
||||||
|
macRetinaSupport: 1
|
||||||
|
runInBackground: 0
|
||||||
|
captureSingleScreen: 0
|
||||||
|
muteOtherAudioSources: 0
|
||||||
|
Prepare IOS For Recording: 0
|
||||||
|
Force IOS Speakers When Recording: 0
|
||||||
|
deferSystemGesturesMode: 0
|
||||||
|
hideHomeButton: 0
|
||||||
|
submitAnalytics: 1
|
||||||
|
usePlayerLog: 1
|
||||||
|
bakeCollisionMeshes: 0
|
||||||
|
forceSingleInstance: 0
|
||||||
|
useFlipModelSwapchain: 1
|
||||||
|
resizableWindow: 0
|
||||||
|
useMacAppStoreValidation: 0
|
||||||
|
macAppStoreCategory: public.app-category.games
|
||||||
|
gpuSkinning: 0
|
||||||
|
xboxPIXTextureCapture: 0
|
||||||
|
xboxEnableAvatar: 0
|
||||||
|
xboxEnableKinect: 0
|
||||||
|
xboxEnableKinectAutoTracking: 0
|
||||||
|
xboxEnableFitness: 0
|
||||||
|
visibleInBackground: 1
|
||||||
|
allowFullscreenSwitch: 1
|
||||||
|
fullscreenMode: 1
|
||||||
|
xboxSpeechDB: 0
|
||||||
|
xboxEnableHeadOrientation: 0
|
||||||
|
xboxEnableGuest: 0
|
||||||
|
xboxEnablePIXSampling: 0
|
||||||
|
metalFramebufferOnly: 0
|
||||||
|
xboxOneResolution: 0
|
||||||
|
xboxOneSResolution: 0
|
||||||
|
xboxOneXResolution: 3
|
||||||
|
xboxOneMonoLoggingLevel: 0
|
||||||
|
xboxOneLoggingLevel: 1
|
||||||
|
xboxOneDisableEsram: 0
|
||||||
|
xboxOneEnableTypeOptimization: 0
|
||||||
|
xboxOnePresentImmediateThreshold: 0
|
||||||
|
switchQueueCommandMemory: 1048576
|
||||||
|
switchQueueControlMemory: 16384
|
||||||
|
switchQueueComputeMemory: 262144
|
||||||
|
switchNVNShaderPoolsGranularity: 33554432
|
||||||
|
switchNVNDefaultPoolsGranularity: 16777216
|
||||||
|
switchNVNOtherPoolsGranularity: 16777216
|
||||||
|
switchNVNMaxPublicTextureIDCount: 0
|
||||||
|
switchNVNMaxPublicSamplerIDCount: 0
|
||||||
|
stadiaPresentMode: 0
|
||||||
|
stadiaTargetFramerate: 0
|
||||||
|
vulkanNumSwapchainBuffers: 3
|
||||||
|
vulkanEnableSetSRGBWrite: 0
|
||||||
|
vulkanEnablePreTransform: 0
|
||||||
|
vulkanEnableLateAcquireNextImage: 0
|
||||||
|
vulkanEnableCommandBufferRecycling: 1
|
||||||
|
m_SupportedAspectRatios:
|
||||||
|
4:3: 1
|
||||||
|
5:4: 1
|
||||||
|
16:10: 1
|
||||||
|
16:9: 1
|
||||||
|
Others: 1
|
||||||
|
bundleVersion: 1.0
|
||||||
|
preloadedAssets: []
|
||||||
|
metroInputSource: 0
|
||||||
|
wsaTransparentSwapchain: 0
|
||||||
|
m_HolographicPauseOnTrackingLoss: 1
|
||||||
|
xboxOneDisableKinectGpuReservation: 1
|
||||||
|
xboxOneEnable7thCore: 1
|
||||||
|
vrSettings:
|
||||||
|
enable360StereoCapture: 0
|
||||||
|
isWsaHolographicRemotingEnabled: 0
|
||||||
|
enableFrameTimingStats: 0
|
||||||
|
useHDRDisplay: 0
|
||||||
|
D3DHDRBitDepth: 0
|
||||||
|
m_ColorGamuts: 00000000
|
||||||
|
targetPixelDensity: 30
|
||||||
|
resolutionScalingMode: 0
|
||||||
|
androidSupportedAspectRatio: 1
|
||||||
|
androidMaxAspectRatio: 2.1
|
||||||
|
applicationIdentifier:
|
||||||
|
Standalone: com.DefaultCompany.2DProject
|
||||||
|
buildNumber:
|
||||||
|
Standalone: 0
|
||||||
|
iPhone: 0
|
||||||
|
tvOS: 0
|
||||||
|
overrideDefaultApplicationIdentifier: 1
|
||||||
|
AndroidBundleVersionCode: 1
|
||||||
|
AndroidMinSdkVersion: 22
|
||||||
|
AndroidTargetSdkVersion: 0
|
||||||
|
AndroidPreferredInstallLocation: 1
|
||||||
|
aotOptions:
|
||||||
|
stripEngineCode: 1
|
||||||
|
iPhoneStrippingLevel: 0
|
||||||
|
iPhoneScriptCallOptimization: 0
|
||||||
|
ForceInternetPermission: 0
|
||||||
|
ForceSDCardPermission: 0
|
||||||
|
CreateWallpaper: 0
|
||||||
|
APKExpansionFiles: 0
|
||||||
|
keepLoadedShadersAlive: 0
|
||||||
|
StripUnusedMeshComponents: 0
|
||||||
|
VertexChannelCompressionMask: 4054
|
||||||
|
iPhoneSdkVersion: 988
|
||||||
|
iOSTargetOSVersionString: 11.0
|
||||||
|
tvOSSdkVersion: 0
|
||||||
|
tvOSRequireExtendedGameController: 0
|
||||||
|
tvOSTargetOSVersionString: 11.0
|
||||||
|
uIPrerenderedIcon: 0
|
||||||
|
uIRequiresPersistentWiFi: 0
|
||||||
|
uIRequiresFullScreen: 1
|
||||||
|
uIStatusBarHidden: 1
|
||||||
|
uIExitOnSuspend: 0
|
||||||
|
uIStatusBarStyle: 0
|
||||||
|
appleTVSplashScreen: {fileID: 0}
|
||||||
|
appleTVSplashScreen2x: {fileID: 0}
|
||||||
|
tvOSSmallIconLayers: []
|
||||||
|
tvOSSmallIconLayers2x: []
|
||||||
|
tvOSLargeIconLayers: []
|
||||||
|
tvOSLargeIconLayers2x: []
|
||||||
|
tvOSTopShelfImageLayers: []
|
||||||
|
tvOSTopShelfImageLayers2x: []
|
||||||
|
tvOSTopShelfImageWideLayers: []
|
||||||
|
tvOSTopShelfImageWideLayers2x: []
|
||||||
|
iOSLaunchScreenType: 0
|
||||||
|
iOSLaunchScreenPortrait: {fileID: 0}
|
||||||
|
iOSLaunchScreenLandscape: {fileID: 0}
|
||||||
|
iOSLaunchScreenBackgroundColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 0
|
||||||
|
iOSLaunchScreenFillPct: 100
|
||||||
|
iOSLaunchScreenSize: 100
|
||||||
|
iOSLaunchScreenCustomXibPath:
|
||||||
|
iOSLaunchScreeniPadType: 0
|
||||||
|
iOSLaunchScreeniPadImage: {fileID: 0}
|
||||||
|
iOSLaunchScreeniPadBackgroundColor:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 0
|
||||||
|
iOSLaunchScreeniPadFillPct: 100
|
||||||
|
iOSLaunchScreeniPadSize: 100
|
||||||
|
iOSLaunchScreeniPadCustomXibPath:
|
||||||
|
iOSLaunchScreenCustomStoryboardPath:
|
||||||
|
iOSLaunchScreeniPadCustomStoryboardPath:
|
||||||
|
iOSDeviceRequirements: []
|
||||||
|
iOSURLSchemes: []
|
||||||
|
macOSURLSchemes: []
|
||||||
|
iOSBackgroundModes: 0
|
||||||
|
iOSMetalForceHardShadows: 0
|
||||||
|
metalEditorSupport: 1
|
||||||
|
metalAPIValidation: 1
|
||||||
|
iOSRenderExtraFrameOnPause: 0
|
||||||
|
iosCopyPluginsCodeInsteadOfSymlink: 0
|
||||||
|
appleDeveloperTeamID:
|
||||||
|
iOSManualSigningProvisioningProfileID:
|
||||||
|
tvOSManualSigningProvisioningProfileID:
|
||||||
|
iOSManualSigningProvisioningProfileType: 0
|
||||||
|
tvOSManualSigningProvisioningProfileType: 0
|
||||||
|
appleEnableAutomaticSigning: 0
|
||||||
|
iOSRequireARKit: 0
|
||||||
|
iOSAutomaticallyDetectAndAddCapabilities: 1
|
||||||
|
appleEnableProMotion: 0
|
||||||
|
shaderPrecisionModel: 0
|
||||||
|
clonedFromGUID: 10ad67313f4034357812315f3c407484
|
||||||
|
templatePackageId: com.unity.template.2d@6.1.0
|
||||||
|
templateDefaultScene: Assets/Scenes/SampleScene.unity
|
||||||
|
useCustomMainManifest: 0
|
||||||
|
useCustomLauncherManifest: 0
|
||||||
|
useCustomMainGradleTemplate: 0
|
||||||
|
useCustomLauncherGradleManifest: 0
|
||||||
|
useCustomBaseGradleTemplate: 0
|
||||||
|
useCustomGradlePropertiesTemplate: 0
|
||||||
|
useCustomProguardFile: 0
|
||||||
|
AndroidTargetArchitectures: 1
|
||||||
|
AndroidTargetDevices: 0
|
||||||
|
AndroidSplashScreenScale: 0
|
||||||
|
androidSplashScreen: {fileID: 0}
|
||||||
|
AndroidKeystoreName:
|
||||||
|
AndroidKeyaliasName:
|
||||||
|
AndroidBuildApkPerCpuArchitecture: 0
|
||||||
|
AndroidTVCompatibility: 0
|
||||||
|
AndroidIsGame: 1
|
||||||
|
AndroidEnableTango: 0
|
||||||
|
androidEnableBanner: 1
|
||||||
|
androidUseLowAccuracyLocation: 0
|
||||||
|
androidUseCustomKeystore: 0
|
||||||
|
m_AndroidBanners:
|
||||||
|
- width: 320
|
||||||
|
height: 180
|
||||||
|
banner: {fileID: 0}
|
||||||
|
androidGamepadSupportLevel: 0
|
||||||
|
chromeosInputEmulation: 1
|
||||||
|
AndroidMinifyWithR8: 0
|
||||||
|
AndroidMinifyRelease: 0
|
||||||
|
AndroidMinifyDebug: 0
|
||||||
|
AndroidValidateAppBundleSize: 1
|
||||||
|
AndroidAppBundleSizeToValidate: 150
|
||||||
|
m_BuildTargetIcons: []
|
||||||
|
m_BuildTargetPlatformIcons: []
|
||||||
|
m_BuildTargetBatching: []
|
||||||
|
m_BuildTargetGraphicsJobs:
|
||||||
|
- m_BuildTarget: MacStandaloneSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: Switch
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: MetroSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: AppleTVSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: BJMSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: LinuxStandaloneSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: PS4Player
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: iOSSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: WindowsStandaloneSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: XboxOnePlayer
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: LuminSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: AndroidPlayer
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
- m_BuildTarget: WebGLSupport
|
||||||
|
m_GraphicsJobs: 0
|
||||||
|
m_BuildTargetGraphicsJobMode: []
|
||||||
|
m_BuildTargetGraphicsAPIs:
|
||||||
|
- m_BuildTarget: AndroidPlayer
|
||||||
|
m_APIs: 150000000b000000
|
||||||
|
m_Automatic: 1
|
||||||
|
- m_BuildTarget: iOSSupport
|
||||||
|
m_APIs: 10000000
|
||||||
|
m_Automatic: 1
|
||||||
|
m_BuildTargetVRSettings: []
|
||||||
|
openGLRequireES31: 0
|
||||||
|
openGLRequireES31AEP: 0
|
||||||
|
openGLRequireES32: 0
|
||||||
|
m_TemplateCustomTags: {}
|
||||||
|
mobileMTRendering:
|
||||||
|
Android: 1
|
||||||
|
iPhone: 1
|
||||||
|
tvOS: 1
|
||||||
|
m_BuildTargetGroupLightmapEncodingQuality: []
|
||||||
|
m_BuildTargetGroupLightmapSettings: []
|
||||||
|
m_BuildTargetNormalMapEncoding: []
|
||||||
|
m_BuildTargetDefaultTextureCompressionFormat:
|
||||||
|
- m_BuildTarget: Android
|
||||||
|
m_Format: 3
|
||||||
|
playModeTestRunnerEnabled: 0
|
||||||
|
runPlayModeTestAsEditModeTest: 0
|
||||||
|
actionOnDotNetUnhandledException: 1
|
||||||
|
enableInternalProfiler: 0
|
||||||
|
logObjCUncaughtExceptions: 1
|
||||||
|
enableCrashReportAPI: 0
|
||||||
|
cameraUsageDescription:
|
||||||
|
locationUsageDescription:
|
||||||
|
microphoneUsageDescription:
|
||||||
|
bluetoothUsageDescription:
|
||||||
|
switchNMETAOverride:
|
||||||
|
switchNetLibKey:
|
||||||
|
switchSocketMemoryPoolSize: 6144
|
||||||
|
switchSocketAllocatorPoolSize: 128
|
||||||
|
switchSocketConcurrencyLimit: 14
|
||||||
|
switchScreenResolutionBehavior: 2
|
||||||
|
switchUseCPUProfiler: 0
|
||||||
|
switchUseGOLDLinker: 0
|
||||||
|
switchLTOSetting: 0
|
||||||
|
switchApplicationID: 0x01004b9000490000
|
||||||
|
switchNSODependencies:
|
||||||
|
switchTitleNames_0:
|
||||||
|
switchTitleNames_1:
|
||||||
|
switchTitleNames_2:
|
||||||
|
switchTitleNames_3:
|
||||||
|
switchTitleNames_4:
|
||||||
|
switchTitleNames_5:
|
||||||
|
switchTitleNames_6:
|
||||||
|
switchTitleNames_7:
|
||||||
|
switchTitleNames_8:
|
||||||
|
switchTitleNames_9:
|
||||||
|
switchTitleNames_10:
|
||||||
|
switchTitleNames_11:
|
||||||
|
switchTitleNames_12:
|
||||||
|
switchTitleNames_13:
|
||||||
|
switchTitleNames_14:
|
||||||
|
switchTitleNames_15:
|
||||||
|
switchPublisherNames_0:
|
||||||
|
switchPublisherNames_1:
|
||||||
|
switchPublisherNames_2:
|
||||||
|
switchPublisherNames_3:
|
||||||
|
switchPublisherNames_4:
|
||||||
|
switchPublisherNames_5:
|
||||||
|
switchPublisherNames_6:
|
||||||
|
switchPublisherNames_7:
|
||||||
|
switchPublisherNames_8:
|
||||||
|
switchPublisherNames_9:
|
||||||
|
switchPublisherNames_10:
|
||||||
|
switchPublisherNames_11:
|
||||||
|
switchPublisherNames_12:
|
||||||
|
switchPublisherNames_13:
|
||||||
|
switchPublisherNames_14:
|
||||||
|
switchPublisherNames_15:
|
||||||
|
switchIcons_0: {fileID: 0}
|
||||||
|
switchIcons_1: {fileID: 0}
|
||||||
|
switchIcons_2: {fileID: 0}
|
||||||
|
switchIcons_3: {fileID: 0}
|
||||||
|
switchIcons_4: {fileID: 0}
|
||||||
|
switchIcons_5: {fileID: 0}
|
||||||
|
switchIcons_6: {fileID: 0}
|
||||||
|
switchIcons_7: {fileID: 0}
|
||||||
|
switchIcons_8: {fileID: 0}
|
||||||
|
switchIcons_9: {fileID: 0}
|
||||||
|
switchIcons_10: {fileID: 0}
|
||||||
|
switchIcons_11: {fileID: 0}
|
||||||
|
switchIcons_12: {fileID: 0}
|
||||||
|
switchIcons_13: {fileID: 0}
|
||||||
|
switchIcons_14: {fileID: 0}
|
||||||
|
switchIcons_15: {fileID: 0}
|
||||||
|
switchSmallIcons_0: {fileID: 0}
|
||||||
|
switchSmallIcons_1: {fileID: 0}
|
||||||
|
switchSmallIcons_2: {fileID: 0}
|
||||||
|
switchSmallIcons_3: {fileID: 0}
|
||||||
|
switchSmallIcons_4: {fileID: 0}
|
||||||
|
switchSmallIcons_5: {fileID: 0}
|
||||||
|
switchSmallIcons_6: {fileID: 0}
|
||||||
|
switchSmallIcons_7: {fileID: 0}
|
||||||
|
switchSmallIcons_8: {fileID: 0}
|
||||||
|
switchSmallIcons_9: {fileID: 0}
|
||||||
|
switchSmallIcons_10: {fileID: 0}
|
||||||
|
switchSmallIcons_11: {fileID: 0}
|
||||||
|
switchSmallIcons_12: {fileID: 0}
|
||||||
|
switchSmallIcons_13: {fileID: 0}
|
||||||
|
switchSmallIcons_14: {fileID: 0}
|
||||||
|
switchSmallIcons_15: {fileID: 0}
|
||||||
|
switchManualHTML:
|
||||||
|
switchAccessibleURLs:
|
||||||
|
switchLegalInformation:
|
||||||
|
switchMainThreadStackSize: 1048576
|
||||||
|
switchPresenceGroupId:
|
||||||
|
switchLogoHandling: 0
|
||||||
|
switchReleaseVersion: 0
|
||||||
|
switchDisplayVersion: 1.0.0
|
||||||
|
switchStartupUserAccount: 0
|
||||||
|
switchTouchScreenUsage: 0
|
||||||
|
switchSupportedLanguagesMask: 0
|
||||||
|
switchLogoType: 0
|
||||||
|
switchApplicationErrorCodeCategory:
|
||||||
|
switchUserAccountSaveDataSize: 0
|
||||||
|
switchUserAccountSaveDataJournalSize: 0
|
||||||
|
switchApplicationAttribute: 0
|
||||||
|
switchCardSpecSize: -1
|
||||||
|
switchCardSpecClock: -1
|
||||||
|
switchRatingsMask: 0
|
||||||
|
switchRatingsInt_0: 0
|
||||||
|
switchRatingsInt_1: 0
|
||||||
|
switchRatingsInt_2: 0
|
||||||
|
switchRatingsInt_3: 0
|
||||||
|
switchRatingsInt_4: 0
|
||||||
|
switchRatingsInt_5: 0
|
||||||
|
switchRatingsInt_6: 0
|
||||||
|
switchRatingsInt_7: 0
|
||||||
|
switchRatingsInt_8: 0
|
||||||
|
switchRatingsInt_9: 0
|
||||||
|
switchRatingsInt_10: 0
|
||||||
|
switchRatingsInt_11: 0
|
||||||
|
switchRatingsInt_12: 0
|
||||||
|
switchLocalCommunicationIds_0:
|
||||||
|
switchLocalCommunicationIds_1:
|
||||||
|
switchLocalCommunicationIds_2:
|
||||||
|
switchLocalCommunicationIds_3:
|
||||||
|
switchLocalCommunicationIds_4:
|
||||||
|
switchLocalCommunicationIds_5:
|
||||||
|
switchLocalCommunicationIds_6:
|
||||||
|
switchLocalCommunicationIds_7:
|
||||||
|
switchParentalControl: 0
|
||||||
|
switchAllowsScreenshot: 1
|
||||||
|
switchAllowsVideoCapturing: 1
|
||||||
|
switchAllowsRuntimeAddOnContentInstall: 0
|
||||||
|
switchDataLossConfirmation: 0
|
||||||
|
switchUserAccountLockEnabled: 0
|
||||||
|
switchSystemResourceMemory: 16777216
|
||||||
|
switchSupportedNpadStyles: 22
|
||||||
|
switchNativeFsCacheSize: 32
|
||||||
|
switchIsHoldTypeHorizontal: 0
|
||||||
|
switchSupportedNpadCount: 8
|
||||||
|
switchSocketConfigEnabled: 0
|
||||||
|
switchTcpInitialSendBufferSize: 32
|
||||||
|
switchTcpInitialReceiveBufferSize: 64
|
||||||
|
switchTcpAutoSendBufferSizeMax: 256
|
||||||
|
switchTcpAutoReceiveBufferSizeMax: 256
|
||||||
|
switchUdpSendBufferSize: 9
|
||||||
|
switchUdpReceiveBufferSize: 42
|
||||||
|
switchSocketBufferEfficiency: 4
|
||||||
|
switchSocketInitializeEnabled: 1
|
||||||
|
switchNetworkInterfaceManagerInitializeEnabled: 1
|
||||||
|
switchPlayerConnectionEnabled: 1
|
||||||
|
switchUseNewStyleFilepaths: 0
|
||||||
|
switchUseMicroSleepForYield: 1
|
||||||
|
switchEnableRamDiskSupport: 0
|
||||||
|
switchMicroSleepForYieldTime: 25
|
||||||
|
switchRamDiskSpaceSize: 12
|
||||||
|
ps4NPAgeRating: 12
|
||||||
|
ps4NPTitleSecret:
|
||||||
|
ps4NPTrophyPackPath:
|
||||||
|
ps4ParentalLevel: 11
|
||||||
|
ps4ContentID: ED1633-NPXX51362_00-0000000000000000
|
||||||
|
ps4Category: 0
|
||||||
|
ps4MasterVersion: 01.00
|
||||||
|
ps4AppVersion: 01.00
|
||||||
|
ps4AppType: 0
|
||||||
|
ps4ParamSfxPath:
|
||||||
|
ps4VideoOutPixelFormat: 0
|
||||||
|
ps4VideoOutInitialWidth: 1920
|
||||||
|
ps4VideoOutBaseModeInitialWidth: 1920
|
||||||
|
ps4VideoOutReprojectionRate: 60
|
||||||
|
ps4PronunciationXMLPath:
|
||||||
|
ps4PronunciationSIGPath:
|
||||||
|
ps4BackgroundImagePath:
|
||||||
|
ps4StartupImagePath:
|
||||||
|
ps4StartupImagesFolder:
|
||||||
|
ps4IconImagesFolder:
|
||||||
|
ps4SaveDataImagePath:
|
||||||
|
ps4SdkOverride:
|
||||||
|
ps4BGMPath:
|
||||||
|
ps4ShareFilePath:
|
||||||
|
ps4ShareOverlayImagePath:
|
||||||
|
ps4PrivacyGuardImagePath:
|
||||||
|
ps4ExtraSceSysFile:
|
||||||
|
ps4NPtitleDatPath:
|
||||||
|
ps4RemotePlayKeyAssignment: -1
|
||||||
|
ps4RemotePlayKeyMappingDir:
|
||||||
|
ps4PlayTogetherPlayerCount: 0
|
||||||
|
ps4EnterButtonAssignment: 2
|
||||||
|
ps4ApplicationParam1: 0
|
||||||
|
ps4ApplicationParam2: 0
|
||||||
|
ps4ApplicationParam3: 0
|
||||||
|
ps4ApplicationParam4: 0
|
||||||
|
ps4DownloadDataSize: 0
|
||||||
|
ps4GarlicHeapSize: 2048
|
||||||
|
ps4ProGarlicHeapSize: 2560
|
||||||
|
playerPrefsMaxSize: 32768
|
||||||
|
ps4Passcode: bi9UOuSpM2Tlh01vOzwvSikHFswuzleh
|
||||||
|
ps4pnSessions: 1
|
||||||
|
ps4pnPresence: 1
|
||||||
|
ps4pnFriends: 1
|
||||||
|
ps4pnGameCustomData: 1
|
||||||
|
playerPrefsSupport: 0
|
||||||
|
enableApplicationExit: 0
|
||||||
|
resetTempFolder: 1
|
||||||
|
restrictedAudioUsageRights: 0
|
||||||
|
ps4UseResolutionFallback: 0
|
||||||
|
ps4ReprojectionSupport: 0
|
||||||
|
ps4UseAudio3dBackend: 0
|
||||||
|
ps4UseLowGarlicFragmentationMode: 1
|
||||||
|
ps4SocialScreenEnabled: 0
|
||||||
|
ps4ScriptOptimizationLevel: 2
|
||||||
|
ps4Audio3dVirtualSpeakerCount: 14
|
||||||
|
ps4attribCpuUsage: 0
|
||||||
|
ps4PatchPkgPath:
|
||||||
|
ps4PatchLatestPkgPath:
|
||||||
|
ps4PatchChangeinfoPath:
|
||||||
|
ps4PatchDayOne: 0
|
||||||
|
ps4attribUserManagement: 0
|
||||||
|
ps4attribMoveSupport: 0
|
||||||
|
ps4attrib3DSupport: 0
|
||||||
|
ps4attribShareSupport: 0
|
||||||
|
ps4attribExclusiveVR: 0
|
||||||
|
ps4disableAutoHideSplash: 0
|
||||||
|
ps4videoRecordingFeaturesUsed: 0
|
||||||
|
ps4contentSearchFeaturesUsed: 0
|
||||||
|
ps4CompatibilityPS5: 0
|
||||||
|
ps4GPU800MHz: 1
|
||||||
|
ps4attribEyeToEyeDistanceSettingVR: 0
|
||||||
|
ps4IncludedModules: []
|
||||||
|
ps4attribVROutputEnabled: 0
|
||||||
|
monoEnv:
|
||||||
|
splashScreenBackgroundSourceLandscape: {fileID: 0}
|
||||||
|
splashScreenBackgroundSourcePortrait: {fileID: 0}
|
||||||
|
blurSplashScreenBackground: 1
|
||||||
|
spritePackerPolicy:
|
||||||
|
webGLMemorySize: 32
|
||||||
|
webGLExceptionSupport: 1
|
||||||
|
webGLNameFilesAsHashes: 0
|
||||||
|
webGLDataCaching: 1
|
||||||
|
webGLDebugSymbols: 0
|
||||||
|
webGLEmscriptenArgs:
|
||||||
|
webGLModulesDirectory:
|
||||||
|
webGLTemplate: APPLICATION:Default
|
||||||
|
webGLAnalyzeBuildSize: 0
|
||||||
|
webGLUseEmbeddedResources: 0
|
||||||
|
webGLCompressionFormat: 0
|
||||||
|
webGLWasmArithmeticExceptions: 0
|
||||||
|
webGLLinkerTarget: 1
|
||||||
|
webGLThreadsSupport: 0
|
||||||
|
webGLDecompressionFallback: 0
|
||||||
|
scriptingDefineSymbols: {}
|
||||||
|
additionalCompilerArguments: {}
|
||||||
|
platformArchitecture: {}
|
||||||
|
scriptingBackend: {}
|
||||||
|
il2cppCompilerConfiguration: {}
|
||||||
|
managedStrippingLevel: {}
|
||||||
|
incrementalIl2cppBuild: {}
|
||||||
|
suppressCommonWarnings: 1
|
||||||
|
allowUnsafeCode: 0
|
||||||
|
useDeterministicCompilation: 1
|
||||||
|
enableRoslynAnalyzers: 1
|
||||||
|
additionalIl2CppArgs:
|
||||||
|
scriptingRuntimeVersion: 1
|
||||||
|
gcIncremental: 1
|
||||||
|
assemblyVersionValidation: 1
|
||||||
|
gcWBarrierValidation: 0
|
||||||
|
apiCompatibilityLevelPerPlatform: {}
|
||||||
|
m_RenderingPath: 1
|
||||||
|
m_MobileRenderingPath: 1
|
||||||
|
metroPackageName: 2D_BuiltInRenderer
|
||||||
|
metroPackageVersion:
|
||||||
|
metroCertificatePath:
|
||||||
|
metroCertificatePassword:
|
||||||
|
metroCertificateSubject:
|
||||||
|
metroCertificateIssuer:
|
||||||
|
metroCertificateNotAfter: 0000000000000000
|
||||||
|
metroApplicationDescription: 2D_BuiltInRenderer
|
||||||
|
wsaImages: {}
|
||||||
|
metroTileShortName:
|
||||||
|
metroTileShowName: 0
|
||||||
|
metroMediumTileShowName: 0
|
||||||
|
metroLargeTileShowName: 0
|
||||||
|
metroWideTileShowName: 0
|
||||||
|
metroSupportStreamingInstall: 0
|
||||||
|
metroLastRequiredScene: 0
|
||||||
|
metroDefaultTileSize: 1
|
||||||
|
metroTileForegroundText: 2
|
||||||
|
metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
|
||||||
|
metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
|
||||||
|
metroSplashScreenUseBackgroundColor: 0
|
||||||
|
platformCapabilities: {}
|
||||||
|
metroTargetDeviceFamilies: {}
|
||||||
|
metroFTAName:
|
||||||
|
metroFTAFileTypes: []
|
||||||
|
metroProtocolName:
|
||||||
|
XboxOneProductId:
|
||||||
|
XboxOneUpdateKey:
|
||||||
|
XboxOneSandboxId:
|
||||||
|
XboxOneContentId:
|
||||||
|
XboxOneTitleId:
|
||||||
|
XboxOneSCId:
|
||||||
|
XboxOneGameOsOverridePath:
|
||||||
|
XboxOnePackagingOverridePath:
|
||||||
|
XboxOneAppManifestOverridePath:
|
||||||
|
XboxOneVersion: 1.0.0.0
|
||||||
|
XboxOnePackageEncryption: 0
|
||||||
|
XboxOnePackageUpdateGranularity: 2
|
||||||
|
XboxOneDescription:
|
||||||
|
XboxOneLanguage:
|
||||||
|
- enus
|
||||||
|
XboxOneCapability: []
|
||||||
|
XboxOneGameRating: {}
|
||||||
|
XboxOneIsContentPackage: 0
|
||||||
|
XboxOneEnhancedXboxCompatibilityMode: 0
|
||||||
|
XboxOneEnableGPUVariability: 1
|
||||||
|
XboxOneSockets: {}
|
||||||
|
XboxOneSplashScreen: {fileID: 0}
|
||||||
|
XboxOneAllowedProductIds: []
|
||||||
|
XboxOnePersistentLocalStorageSize: 0
|
||||||
|
XboxOneXTitleMemory: 8
|
||||||
|
XboxOneOverrideIdentityName:
|
||||||
|
XboxOneOverrideIdentityPublisher:
|
||||||
|
vrEditorSettings: {}
|
||||||
|
cloudServicesEnabled: {}
|
||||||
|
luminIcon:
|
||||||
|
m_Name:
|
||||||
|
m_ModelFolderPath:
|
||||||
|
m_PortalFolderPath:
|
||||||
|
luminCert:
|
||||||
|
m_CertPath:
|
||||||
|
m_SignPackage: 1
|
||||||
|
luminIsChannelApp: 0
|
||||||
|
luminVersion:
|
||||||
|
m_VersionCode: 1
|
||||||
|
m_VersionName:
|
||||||
|
apiCompatibilityLevel: 6
|
||||||
|
activeInputHandler: 0
|
||||||
|
cloudProjectId:
|
||||||
|
framebufferDepthMemorylessMode: 0
|
||||||
|
qualitySettingsNames: []
|
||||||
|
projectName:
|
||||||
|
organizationId:
|
||||||
|
cloudEnabled: 0
|
||||||
|
legacyClampBlendShapeWeights: 0
|
||||||
|
playerDataPath:
|
||||||
|
forceSRGBBlit: 1
|
||||||
|
virtualTexturingSupportEnabled: 0
|
|
@ -0,0 +1,2 @@
|
||||||
|
m_EditorVersion: 2021.2.8f1
|
||||||
|
m_EditorVersionWithRevision: 2021.2.8f1 (d0e5f0a7b06a)
|
|
@ -0,0 +1,236 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!47 &1
|
||||||
|
QualitySettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 5
|
||||||
|
m_CurrentQuality: 5
|
||||||
|
m_QualitySettings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Very Low
|
||||||
|
pixelLightCount: 0
|
||||||
|
shadows: 0
|
||||||
|
shadowResolution: 0
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 1
|
||||||
|
shadowDistance: 15
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 0
|
||||||
|
skinWeights: 1
|
||||||
|
textureQuality: 1
|
||||||
|
anisotropicTextures: 0
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 0
|
||||||
|
realtimeReflectionProbes: 0
|
||||||
|
billboardsFaceCameraPosition: 0
|
||||||
|
vSyncCount: 0
|
||||||
|
lodBias: 0.3
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 4
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
customRenderPipeline: {fileID: 0}
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Low
|
||||||
|
pixelLightCount: 0
|
||||||
|
shadows: 0
|
||||||
|
shadowResolution: 0
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 1
|
||||||
|
shadowDistance: 20
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 0
|
||||||
|
skinWeights: 2
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 0
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 0
|
||||||
|
realtimeReflectionProbes: 0
|
||||||
|
billboardsFaceCameraPosition: 0
|
||||||
|
vSyncCount: 0
|
||||||
|
lodBias: 0.4
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 16
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
customRenderPipeline: {fileID: 0}
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Medium
|
||||||
|
pixelLightCount: 1
|
||||||
|
shadows: 1
|
||||||
|
shadowResolution: 0
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 1
|
||||||
|
shadowDistance: 20
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 0
|
||||||
|
skinWeights: 2
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 1
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 0
|
||||||
|
realtimeReflectionProbes: 0
|
||||||
|
billboardsFaceCameraPosition: 0
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 0.7
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 64
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
customRenderPipeline: {fileID: 0}
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: High
|
||||||
|
pixelLightCount: 2
|
||||||
|
shadows: 2
|
||||||
|
shadowResolution: 1
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 2
|
||||||
|
shadowDistance: 40
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 1
|
||||||
|
skinWeights: 2
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 1
|
||||||
|
antiAliasing: 0
|
||||||
|
softParticles: 0
|
||||||
|
softVegetation: 1
|
||||||
|
realtimeReflectionProbes: 1
|
||||||
|
billboardsFaceCameraPosition: 1
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 1
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 256
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
customRenderPipeline: {fileID: 0}
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Very High
|
||||||
|
pixelLightCount: 3
|
||||||
|
shadows: 2
|
||||||
|
shadowResolution: 2
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 2
|
||||||
|
shadowDistance: 70
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 1
|
||||||
|
skinWeights: 4
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 2
|
||||||
|
antiAliasing: 2
|
||||||
|
softParticles: 1
|
||||||
|
softVegetation: 1
|
||||||
|
realtimeReflectionProbes: 1
|
||||||
|
billboardsFaceCameraPosition: 1
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 1.5
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 1024
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
customRenderPipeline: {fileID: 0}
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
- serializedVersion: 2
|
||||||
|
name: Ultra
|
||||||
|
pixelLightCount: 4
|
||||||
|
shadows: 2
|
||||||
|
shadowResolution: 2
|
||||||
|
shadowProjection: 1
|
||||||
|
shadowCascades: 4
|
||||||
|
shadowDistance: 150
|
||||||
|
shadowNearPlaneOffset: 3
|
||||||
|
shadowCascade2Split: 0.33333334
|
||||||
|
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
|
||||||
|
shadowmaskMode: 1
|
||||||
|
skinWeights: 255
|
||||||
|
textureQuality: 0
|
||||||
|
anisotropicTextures: 2
|
||||||
|
antiAliasing: 2
|
||||||
|
softParticles: 1
|
||||||
|
softVegetation: 1
|
||||||
|
realtimeReflectionProbes: 1
|
||||||
|
billboardsFaceCameraPosition: 1
|
||||||
|
vSyncCount: 1
|
||||||
|
lodBias: 2
|
||||||
|
maximumLODLevel: 0
|
||||||
|
streamingMipmapsActive: 0
|
||||||
|
streamingMipmapsAddAllCameras: 1
|
||||||
|
streamingMipmapsMemoryBudget: 512
|
||||||
|
streamingMipmapsRenderersPerFrame: 512
|
||||||
|
streamingMipmapsMaxLevelReduction: 2
|
||||||
|
streamingMipmapsMaxFileIORequests: 1024
|
||||||
|
particleRaycastBudget: 4096
|
||||||
|
asyncUploadTimeSlice: 2
|
||||||
|
asyncUploadBufferSize: 16
|
||||||
|
asyncUploadPersistentBuffer: 1
|
||||||
|
resolutionScalingFixedDPIFactor: 1
|
||||||
|
customRenderPipeline: {fileID: 0}
|
||||||
|
excludedTargetPlatforms: []
|
||||||
|
m_PerPlatformDefaultQuality:
|
||||||
|
Android: 2
|
||||||
|
Lumin: 5
|
||||||
|
Nintendo Switch: 5
|
||||||
|
PS4: 5
|
||||||
|
Stadia: 5
|
||||||
|
Standalone: 5
|
||||||
|
WebGL: 3
|
||||||
|
Windows Store Apps: 5
|
||||||
|
XboxOne: 5
|
||||||
|
iPhone: 2
|
||||||
|
tvOS: 2
|
|
@ -0,0 +1,43 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!78 &1
|
||||||
|
TagManager:
|
||||||
|
serializedVersion: 2
|
||||||
|
tags: []
|
||||||
|
layers:
|
||||||
|
- Default
|
||||||
|
- TransparentFX
|
||||||
|
- Ignore Raycast
|
||||||
|
-
|
||||||
|
- Water
|
||||||
|
- UI
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
m_SortingLayers:
|
||||||
|
- name: Default
|
||||||
|
uniqueID: 0
|
||||||
|
locked: 0
|
|
@ -0,0 +1,9 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!5 &1
|
||||||
|
TimeManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
Fixed Timestep: 0.02
|
||||||
|
Maximum Allowed Timestep: 0.33333334
|
||||||
|
m_TimeScale: 1
|
||||||
|
Maximum Particle Timestep: 0.03
|
|
@ -0,0 +1,35 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!310 &1
|
||||||
|
UnityConnectSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 1
|
||||||
|
m_Enabled: 0
|
||||||
|
m_TestMode: 0
|
||||||
|
m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
|
||||||
|
m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
|
||||||
|
m_ConfigUrl: https://config.uca.cloud.unity3d.com
|
||||||
|
m_DashboardUrl: https://dashboard.unity3d.com
|
||||||
|
m_TestInitMode: 0
|
||||||
|
CrashReportingSettings:
|
||||||
|
m_EventUrl: https://perf-events.cloud.unity3d.com
|
||||||
|
m_Enabled: 0
|
||||||
|
m_LogBufferSize: 10
|
||||||
|
m_CaptureEditorExceptions: 1
|
||||||
|
UnityPurchasingSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
m_TestMode: 0
|
||||||
|
UnityAnalyticsSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
m_TestMode: 0
|
||||||
|
m_InitializeOnStartup: 1
|
||||||
|
UnityAdsSettings:
|
||||||
|
m_Enabled: 0
|
||||||
|
m_InitializeOnStartup: 1
|
||||||
|
m_TestMode: 0
|
||||||
|
m_IosGameId:
|
||||||
|
m_AndroidGameId:
|
||||||
|
m_GameIds: {}
|
||||||
|
m_GameId:
|
||||||
|
PerformanceReportingSettings:
|
||||||
|
m_Enabled: 0
|
|
@ -0,0 +1,14 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!937362698 &1
|
||||||
|
VFXManager:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_IndirectShader: {fileID: 0}
|
||||||
|
m_CopyBufferShader: {fileID: 0}
|
||||||
|
m_SortShader: {fileID: 0}
|
||||||
|
m_StripUpdateShader: {fileID: 0}
|
||||||
|
m_RenderPipeSettingsPath:
|
||||||
|
m_FixedTimeStep: 0.016666668
|
||||||
|
m_MaxDeltaTime: 0.05
|
||||||
|
m_CompiledVersion: 0
|
||||||
|
m_RuntimeVersion: 0
|
|
@ -0,0 +1,8 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!890905787 &1
|
||||||
|
VersionControlSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_Mode: Visible Meta Files
|
||||||
|
m_CollabEditorSettings:
|
||||||
|
inProgressEnabled: 1
|
|
@ -98,8 +98,13 @@ function run() {
|
||||||
try {
|
try {
|
||||||
model_1.Action.checkCompatibility();
|
model_1.Action.checkCompatibility();
|
||||||
const { workspace, actionFolder } = model_1.Action;
|
const { workspace, actionFolder } = model_1.Action;
|
||||||
const { editorVersion, customImage, projectPath, customParameters, testMode, coverageOptions, artifactsPath, useHostNetwork, sshAgent, sshPublicKeysDirectoryPath, gitPrivateToken, githubToken, checkName, packageMode, packageName, chownFilesTo, dockerCpuLimit, dockerMemoryLimit, dockerIsolationMode, unityLicensingServer, } = model_1.Input.getFromUser();
|
const { editorVersion, customImage, projectPath, customParameters, testMode, coverageOptions, artifactsPath, useHostNetwork, sshAgent, sshPublicKeysDirectoryPath, gitPrivateToken, githubToken, checkName, packageMode, packageName, chownFilesTo, dockerCpuLimit, dockerMemoryLimit, dockerIsolationMode, unityLicensingServer, runAsHostUser, containerRegistryRepository, containerRegistryImageVersion, unitySerial, } = model_1.Input.getFromUser();
|
||||||
const baseImage = new model_1.ImageTag({ editorVersion, customImage });
|
const baseImage = new model_1.ImageTag({
|
||||||
|
editorVersion,
|
||||||
|
customImage,
|
||||||
|
containerRegistryRepository,
|
||||||
|
containerRegistryImageVersion,
|
||||||
|
});
|
||||||
const runnerContext = model_1.Action.runnerContext();
|
const runnerContext = model_1.Action.runnerContext();
|
||||||
try {
|
try {
|
||||||
yield model_1.Docker.run(baseImage, Object.assign({ actionFolder,
|
yield model_1.Docker.run(baseImage, Object.assign({ actionFolder,
|
||||||
|
@ -121,7 +126,9 @@ function run() {
|
||||||
dockerCpuLimit,
|
dockerCpuLimit,
|
||||||
dockerMemoryLimit,
|
dockerMemoryLimit,
|
||||||
dockerIsolationMode,
|
dockerIsolationMode,
|
||||||
unityLicensingServer }, runnerContext));
|
unityLicensingServer,
|
||||||
|
runAsHostUser,
|
||||||
|
unitySerial }, runnerContext));
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
yield model_1.Output.setArtifactsPath(artifactsPath);
|
yield model_1.Output.setArtifactsPath(artifactsPath);
|
||||||
|
@ -218,6 +225,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
|
const image_environment_factory_1 = __importDefault(__nccwpck_require__(5145));
|
||||||
const fs_1 = __nccwpck_require__(7147);
|
const fs_1 = __nccwpck_require__(7147);
|
||||||
const licensing_server_setup_1 = __importDefault(__nccwpck_require__(6089));
|
const licensing_server_setup_1 = __importDefault(__nccwpck_require__(6089));
|
||||||
const exec_1 = __nccwpck_require__(1514);
|
const exec_1 = __nccwpck_require__(1514);
|
||||||
|
@ -266,7 +274,7 @@ const Docker = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
getLinuxCommand(image, parameters) {
|
getLinuxCommand(image, parameters) {
|
||||||
const { actionFolder, editorVersion, workspace, projectPath, customParameters, testMode, coverageOptions, artifactsPath, useHostNetwork, sshAgent, sshPublicKeysDirectoryPath, packageMode, packageName, gitPrivateToken, githubToken, runnerTemporaryPath, chownFilesTo, dockerCpuLimit, dockerMemoryLimit, unityLicensingServer, } = parameters;
|
const { actionFolder, workspace, testMode, useHostNetwork, sshAgent, sshPublicKeysDirectoryPath, githubToken, runnerTemporaryPath, dockerCpuLimit, dockerMemoryLimit, } = parameters;
|
||||||
const githubHome = path_1.default.join(runnerTemporaryPath, '_github_home');
|
const githubHome = path_1.default.join(runnerTemporaryPath, '_github_home');
|
||||||
if (!(0, fs_1.existsSync)(githubHome))
|
if (!(0, fs_1.existsSync)(githubHome))
|
||||||
(0, fs_1.mkdirSync)(githubHome);
|
(0, fs_1.mkdirSync)(githubHome);
|
||||||
|
@ -276,66 +284,37 @@ const Docker = {
|
||||||
const cidfile = containerIdFilePath(parameters);
|
const cidfile = containerIdFilePath(parameters);
|
||||||
const testPlatforms = (testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]).join(';');
|
const testPlatforms = (testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]).join(';');
|
||||||
return `docker run \
|
return `docker run \
|
||||||
--workdir /github/workspace \
|
--workdir /github/workspace \
|
||||||
--cidfile "${cidfile}" \
|
--cidfile "${cidfile}" \
|
||||||
--rm \
|
--rm \
|
||||||
--env UNITY_LICENSE \
|
${image_environment_factory_1.default.getEnvVarString(parameters)} \
|
||||||
--env UNITY_LICENSE_FILE \
|
--env GIT_CONFIG_EXTENSIONS \
|
||||||
--env UNITY_EMAIL \
|
--env TEST_PLATFORMS="${testPlatforms}" \
|
||||||
--env UNITY_PASSWORD \
|
--env GITHUB_WORKSPACE="/github/workspace" \
|
||||||
--env UNITY_SERIAL \
|
${sshAgent ? '--env SSH_AUTH_SOCK=/ssh-agent' : ''} \
|
||||||
--env UNITY_LICENSING_SERVER="${unityLicensingServer}" \
|
--volume "${githubHome}:/root:z" \
|
||||||
--env UNITY_VERSION="${editorVersion}" \
|
--volume "${githubWorkflow}:/github/workflow:z" \
|
||||||
--env PROJECT_PATH="${projectPath}" \
|
--volume "${workspace}:/github/workspace:z" \
|
||||||
--env CUSTOM_PARAMETERS="${customParameters}" \
|
--volume "${actionFolder}/test-standalone-scripts:/UnityStandaloneScripts:z" \
|
||||||
--env TEST_PLATFORMS="${testPlatforms}" \
|
--volume "${actionFolder}/platforms/ubuntu:/steps:z" \
|
||||||
--env COVERAGE_OPTIONS="${coverageOptions}" \
|
--volume "${actionFolder}/unity-config:/usr/share/unity3d/config/:z" \
|
||||||
--env COVERAGE_RESULTS_PATH="CodeCoverage" \
|
--volume "${actionFolder}/BlankProject":"/BlankProject:z" \
|
||||||
--env ARTIFACTS_PATH="${artifactsPath}" \
|
--cpus=${dockerCpuLimit} \
|
||||||
--env PACKAGE_MODE="${packageMode}" \
|
--memory=${dockerMemoryLimit} \
|
||||||
--env PACKAGE_NAME="${packageName}" \
|
${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
|
||||||
--env GITHUB_REF \
|
${sshAgent && !sshPublicKeysDirectoryPath
|
||||||
--env GITHUB_SHA \
|
|
||||||
--env GITHUB_REPOSITORY \
|
|
||||||
--env GITHUB_ACTOR \
|
|
||||||
--env GITHUB_WORKFLOW \
|
|
||||||
--env GITHUB_HEAD_REF \
|
|
||||||
--env GITHUB_BASE_REF \
|
|
||||||
--env GITHUB_EVENT_NAME \
|
|
||||||
--env GITHUB_WORKSPACE="/github/workspace" \
|
|
||||||
--env GITHUB_ACTION \
|
|
||||||
--env GITHUB_EVENT_PATH \
|
|
||||||
--env RUNNER_OS \
|
|
||||||
--env RUNNER_TOOL_CACHE \
|
|
||||||
--env RUNNER_TEMP \
|
|
||||||
--env RUNNER_WORKSPACE \
|
|
||||||
--env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
|
|
||||||
--env CHOWN_FILES_TO="${chownFilesTo}" \
|
|
||||||
--env GIT_CONFIG_EXTENSIONS \
|
|
||||||
${sshAgent ? '--env SSH_AUTH_SOCK=/ssh-agent' : ''} \
|
|
||||||
--volume "${githubHome}:/root:z" \
|
|
||||||
--volume "${githubWorkflow}:/github/workflow:z" \
|
|
||||||
--volume "${workspace}:/github/workspace:z" \
|
|
||||||
--volume "${actionFolder}/test-standalone-scripts:/UnityStandaloneScripts:z" \
|
|
||||||
--volume "${actionFolder}/steps:/steps:z" \
|
|
||||||
--volume "${actionFolder}/entrypoint.sh:/entrypoint.sh:z" \
|
|
||||||
--volume "${actionFolder}/unity-config:/usr/share/unity3d/config/:z" \
|
|
||||||
--cpus=${dockerCpuLimit} \
|
|
||||||
--memory=${dockerMemoryLimit} \
|
|
||||||
${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
|
|
||||||
${sshAgent && !sshPublicKeysDirectoryPath
|
|
||||||
? `--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro`
|
? `--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro`
|
||||||
: ''} \
|
: ''} \
|
||||||
${sshPublicKeysDirectoryPath
|
${sshPublicKeysDirectoryPath
|
||||||
? `--volume ${sshPublicKeysDirectoryPath}:/root/.ssh:ro`
|
? `--volume ${sshPublicKeysDirectoryPath}:/root/.ssh:ro`
|
||||||
: ''} \
|
: ''} \
|
||||||
${useHostNetwork ? '--net=host' : ''} \
|
${useHostNetwork ? '--net=host' : ''} \
|
||||||
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
|
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
|
||||||
${image} \
|
${image} \
|
||||||
/bin/bash -c /entrypoint.sh`;
|
/bin/bash -c "/steps/entrypoint.sh`;
|
||||||
},
|
},
|
||||||
getWindowsCommand(image, parameters) {
|
getWindowsCommand(image, parameters) {
|
||||||
const { actionFolder, editorVersion, workspace, projectPath, customParameters, testMode, coverageOptions, artifactsPath, useHostNetwork, sshAgent, packageMode, packageName, gitPrivateToken, githubToken, runnerTemporaryPath, chownFilesTo, dockerCpuLimit, dockerMemoryLimit, dockerIsolationMode, unityLicensingServer, } = parameters;
|
const { actionFolder, workspace, testMode, useHostNetwork, sshAgent, githubToken, runnerTemporaryPath, dockerCpuLimit, dockerMemoryLimit, dockerIsolationMode, } = parameters;
|
||||||
const githubHome = path_1.default.join(runnerTemporaryPath, '_github_home');
|
const githubHome = path_1.default.join(runnerTemporaryPath, '_github_home');
|
||||||
if (!(0, fs_1.existsSync)(githubHome))
|
if (!(0, fs_1.existsSync)(githubHome))
|
||||||
(0, fs_1.mkdirSync)(githubHome);
|
(0, fs_1.mkdirSync)(githubHome);
|
||||||
|
@ -345,48 +324,19 @@ const Docker = {
|
||||||
(0, fs_1.mkdirSync)(githubWorkflow);
|
(0, fs_1.mkdirSync)(githubWorkflow);
|
||||||
const testPlatforms = (testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]).join(';');
|
const testPlatforms = (testMode === 'all' ? ['playmode', 'editmode', 'COMBINE_RESULTS'] : [testMode]).join(';');
|
||||||
return `docker run \
|
return `docker run \
|
||||||
--workdir /github/workspace \
|
--workdir c:/github/workspace \
|
||||||
--cidfile "${cidfile}" \
|
--cidfile "${cidfile}" \
|
||||||
--rm \
|
--rm \
|
||||||
--env UNITY_LICENSE \
|
${image_environment_factory_1.default.getEnvVarString(parameters)} \
|
||||||
--env UNITY_LICENSE_FILE \
|
|
||||||
--env UNITY_EMAIL \
|
|
||||||
--env UNITY_PASSWORD \
|
|
||||||
--env UNITY_SERIAL \
|
|
||||||
--env UNITY_LICENSING_SERVER="${unityLicensingServer}" \
|
|
||||||
--env UNITY_VERSION="${editorVersion}" \
|
|
||||||
--env PROJECT_PATH="${projectPath}" \
|
|
||||||
--env CUSTOM_PARAMETERS="${customParameters}" \
|
|
||||||
--env TEST_PLATFORMS="${testPlatforms}" \
|
--env TEST_PLATFORMS="${testPlatforms}" \
|
||||||
--env COVERAGE_OPTIONS="${coverageOptions}" \
|
--env GITHUB_WORKSPACE="c:/github/workspace" \
|
||||||
--env COVERAGE_RESULTS_PATH="CodeCoverage" \
|
|
||||||
--env ARTIFACTS_PATH="${artifactsPath}" \
|
|
||||||
--env PACKAGE_MODE="${packageMode}" \
|
|
||||||
--env PACKAGE_NAME="${packageName}" \
|
|
||||||
--env GITHUB_REF \
|
|
||||||
--env GITHUB_SHA \
|
|
||||||
--env GITHUB_REPOSITORY \
|
|
||||||
--env GITHUB_ACTOR \
|
|
||||||
--env GITHUB_WORKFLOW \
|
|
||||||
--env GITHUB_HEAD_REF \
|
|
||||||
--env GITHUB_BASE_REF \
|
|
||||||
--env GITHUB_EVENT_NAME \
|
|
||||||
--env GITHUB_WORKSPACE="/github/workspace" \
|
|
||||||
--env GITHUB_ACTION \
|
|
||||||
--env GITHUB_EVENT_PATH \
|
|
||||||
--env RUNNER_OS \
|
|
||||||
--env RUNNER_TOOL_CACHE \
|
|
||||||
--env RUNNER_TEMP \
|
|
||||||
--env RUNNER_WORKSPACE \
|
|
||||||
--env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
|
|
||||||
--env CHOWN_FILES_TO="${chownFilesTo}" \
|
|
||||||
${sshAgent ? '--env SSH_AUTH_SOCK=c:/ssh-agent' : ''} \
|
${sshAgent ? '--env SSH_AUTH_SOCK=c:/ssh-agent' : ''} \
|
||||||
--volume "${actionFolder}/test-standalone-scripts":"c:/UnityStandaloneScripts" \
|
--volume "${actionFolder}/test-standalone-scripts":"c:/UnityStandaloneScripts" \
|
||||||
--volume "${githubHome}":"c:/root" \
|
--volume "${githubHome}":"c:/root" \
|
||||||
--volume "${githubWorkflow}":"c:/github/workflow" \
|
--volume "${githubWorkflow}":"c:/github/workflow" \
|
||||||
--volume "${workspace}":"c:/github/workspace" \
|
--volume "${workspace}":"c:/github/workspace" \
|
||||||
--volume "${actionFolder}/steps":"c:/steps" \
|
--volume "${actionFolder}/platforms/windows":"c:/steps" \
|
||||||
--volume "${actionFolder}":"c:/dist" \
|
--volume "${actionFolder}/BlankProject":"c:/BlankProject" \
|
||||||
${sshAgent ? `--volume ${sshAgent}:c:/ssh-agent` : ''} \
|
${sshAgent ? `--volume ${sshAgent}:c:/ssh-agent` : ''} \
|
||||||
${sshAgent
|
${sshAgent
|
||||||
? `--volume c:/Users/Administrator/.ssh/known_hosts:c:/root/.ssh/known_hosts`
|
? `--volume c:/Users/Administrator/.ssh/known_hosts:c:/root/.ssh/known_hosts`
|
||||||
|
@ -397,12 +347,91 @@ const Docker = {
|
||||||
${useHostNetwork ? '--net=host' : ''} \
|
${useHostNetwork ? '--net=host' : ''} \
|
||||||
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
|
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
|
||||||
${image} \
|
${image} \
|
||||||
powershell c:/dist/entrypoint.ps1`;
|
powershell c:/steps/entrypoint.ps1`;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
exports["default"] = Docker;
|
exports["default"] = Docker;
|
||||||
|
|
||||||
|
|
||||||
|
/***/ }),
|
||||||
|
|
||||||
|
/***/ 5145:
|
||||||
|
/***/ ((__unused_webpack_module, exports) => {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
|
class ImageEnvironmentFactory {
|
||||||
|
static getEnvVarString(parameters) {
|
||||||
|
const environmentVariables = ImageEnvironmentFactory.getEnvironmentVariables(parameters);
|
||||||
|
let string = '';
|
||||||
|
for (const p of environmentVariables) {
|
||||||
|
if (p.value === '' || p.value === undefined) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (p.name !== 'ANDROID_KEYSTORE_BASE64' && p.value.toString().includes(`\n`)) {
|
||||||
|
string += `--env ${p.name} `;
|
||||||
|
process.env[p.name] = p.value.toString();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
string += `--env ${p.name}="${p.value}" `;
|
||||||
|
}
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
static getEnvironmentVariables(parameters) {
|
||||||
|
let environmentVariables = [
|
||||||
|
{ name: 'UNITY_EMAIL', value: process.env.UNITY_EMAIL },
|
||||||
|
{ name: 'UNITY_PASSWORD', value: process.env.UNITY_PASSWORD },
|
||||||
|
{ name: 'UNITY_SERIAL', value: parameters.unitySerial },
|
||||||
|
{
|
||||||
|
name: 'UNITY_LICENSING_SERVER',
|
||||||
|
value: parameters.unityLicensingServer,
|
||||||
|
},
|
||||||
|
{ name: 'UNITY_VERSION', value: parameters.editorVersion },
|
||||||
|
{
|
||||||
|
name: 'USYM_UPLOAD_AUTH_TOKEN',
|
||||||
|
value: process.env.USYM_UPLOAD_AUTH_TOKEN,
|
||||||
|
},
|
||||||
|
{ name: 'PROJECT_PATH', value: parameters.projectPath },
|
||||||
|
{ name: 'COVERAGE_OPTIONS', value: parameters.coverageOptions },
|
||||||
|
{ name: 'COVERAGE_RESULTS_PATH', value: 'CodeCoverage' },
|
||||||
|
{ name: 'ARTIFACTS_PATH', value: parameters.artifactsPath },
|
||||||
|
{ name: 'PACKAGE_MODE', value: parameters.packageMode },
|
||||||
|
{ name: 'PACKAGE_NAME', value: parameters.packageName },
|
||||||
|
{ name: 'GIT_PRIVATE_TOKEN', value: parameters.gitPrivateToken },
|
||||||
|
{ name: 'VERSION', value: parameters.buildVersion },
|
||||||
|
{ name: 'CUSTOM_PARAMETERS', value: parameters.customParameters },
|
||||||
|
{ name: 'RUN_AS_HOST_USER', value: parameters.runAsHostUser },
|
||||||
|
{ name: 'CHOWN_FILES_TO', value: parameters.chownFilesTo },
|
||||||
|
{ name: 'GITHUB_REF', value: process.env.GITHUB_REF },
|
||||||
|
{ name: 'GITHUB_SHA', value: process.env.GITHUB_SHA },
|
||||||
|
{ name: 'GITHUB_REPOSITORY', value: process.env.GITHUB_REPOSITORY },
|
||||||
|
{ name: 'GITHUB_ACTOR', value: process.env.GITHUB_ACTOR },
|
||||||
|
{ name: 'GITHUB_WORKFLOW', value: process.env.GITHUB_WORKFLOW },
|
||||||
|
{ name: 'GITHUB_HEAD_REF', value: process.env.GITHUB_HEAD_REF },
|
||||||
|
{ name: 'GITHUB_BASE_REF', value: process.env.GITHUB_BASE_REF },
|
||||||
|
{ name: 'GITHUB_EVENT_NAME', value: process.env.GITHUB_EVENT_NAME },
|
||||||
|
{ name: 'GITHUB_ACTION', value: process.env.GITHUB_ACTION },
|
||||||
|
{ name: 'GITHUB_EVENT_PATH', value: process.env.GITHUB_EVENT_PATH },
|
||||||
|
{ name: 'RUNNER_OS', value: process.env.RUNNER_OS },
|
||||||
|
{ name: 'RUNNER_TOOL_CACHE', value: process.env.RUNNER_TOOL_CACHE },
|
||||||
|
{ name: 'RUNNER_TEMP', value: process.env.RUNNER_TEMP },
|
||||||
|
{ name: 'RUNNER_WORKSPACE', value: process.env.RUNNER_WORKSPACE },
|
||||||
|
];
|
||||||
|
for (const variable of environmentVariables) {
|
||||||
|
if (environmentVariables.some(x => variable !== undefined && variable.name !== undefined && x.name === variable.name) === undefined) {
|
||||||
|
environmentVariables = environmentVariables.filter(x => x !== variable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (parameters.sshAgent) {
|
||||||
|
environmentVariables.push({ name: 'SSH_AUTH_SOCK', value: '/ssh-agent' });
|
||||||
|
}
|
||||||
|
return environmentVariables;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports["default"] = ImageEnvironmentFactory;
|
||||||
|
|
||||||
|
|
||||||
/***/ }),
|
/***/ }),
|
||||||
|
|
||||||
/***/ 7648:
|
/***/ 7648:
|
||||||
|
@ -417,20 +446,19 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||||
const platform_1 = __importDefault(__nccwpck_require__(9707));
|
const platform_1 = __importDefault(__nccwpck_require__(9707));
|
||||||
class ImageTag {
|
class ImageTag {
|
||||||
constructor(imageProperties) {
|
constructor(imageProperties) {
|
||||||
const { editorVersion = '2022.3.7f1', targetPlatform = ImageTag.getImagePlatformType(process.platform), customImage, } = imageProperties;
|
const { editorVersion = '2022.3.7f1', targetPlatform = ImageTag.getImagePlatformType(process.platform), customImage, containerRegistryRepository, containerRegistryImageVersion, } = imageProperties;
|
||||||
if (!ImageTag.versionPattern.test(editorVersion)) {
|
if (!ImageTag.versionPattern.test(editorVersion)) {
|
||||||
throw new Error(`Invalid version "${editorVersion}".`);
|
throw new Error(`Invalid version "${editorVersion}".`);
|
||||||
}
|
}
|
||||||
// Either
|
// Either
|
||||||
this.customImage = customImage;
|
this.customImage = customImage;
|
||||||
// Or
|
// Or
|
||||||
this.repository = 'unityci';
|
this.repository = containerRegistryRepository;
|
||||||
this.name = 'editor';
|
|
||||||
this.editorVersion = editorVersion;
|
this.editorVersion = editorVersion;
|
||||||
this.targetPlatform = targetPlatform;
|
this.targetPlatform = targetPlatform;
|
||||||
this.targetPlatformSuffix = ImageTag.getTargetPlatformSuffix(targetPlatform, editorVersion);
|
this.targetPlatformSuffix = ImageTag.getTargetPlatformSuffix(targetPlatform, editorVersion);
|
||||||
this.imagePlatformPrefix = ImageTag.getImagePlatformPrefix(process.platform);
|
this.imagePlatformPrefix = ImageTag.getImagePlatformPrefix(process.platform);
|
||||||
this.imageRollingVersion = 3;
|
this.imageRollingVersion = Number(containerRegistryImageVersion);
|
||||||
}
|
}
|
||||||
static get versionPattern() {
|
static get versionPattern() {
|
||||||
return /^20\d{2}\.\d\.\w{3,4}|3$/;
|
return /^20\d{2}\.\d\.\w{3,4}|3$/;
|
||||||
|
@ -527,7 +555,7 @@ class ImageTag {
|
||||||
return `${this.imagePlatformPrefix}-${versionAndTarget}-${this.imageRollingVersion}`;
|
return `${this.imagePlatformPrefix}-${versionAndTarget}-${this.imageRollingVersion}`;
|
||||||
}
|
}
|
||||||
get image() {
|
get image() {
|
||||||
return `${this.repository}/${this.name}`.replace(/^\/+/, '');
|
return `${this.repository}`.replace(/^\/+/, '');
|
||||||
}
|
}
|
||||||
toString() {
|
toString() {
|
||||||
const { image, tag, customImage } = this;
|
const { image, tag, customImage } = this;
|
||||||
|
@ -572,6 +600,29 @@ Object.defineProperty(exports, "ResultsCheck", ({ enumerable: true, get: functio
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||||
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||||
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||||
|
}
|
||||||
|
Object.defineProperty(o, k2, desc);
|
||||||
|
}) : (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
o[k2] = m[k];
|
||||||
|
}));
|
||||||
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||||
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||||
|
}) : function(o, v) {
|
||||||
|
o["default"] = v;
|
||||||
|
});
|
||||||
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
|
if (mod && mod.__esModule) return mod;
|
||||||
|
var result = {};
|
||||||
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
|
__setModuleDefault(result, mod);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
};
|
};
|
||||||
|
@ -580,22 +631,23 @@ const unity_version_parser_1 = __importDefault(__nccwpck_require__(7049));
|
||||||
const fs_1 = __importDefault(__nccwpck_require__(7147));
|
const fs_1 = __importDefault(__nccwpck_require__(7147));
|
||||||
const core_1 = __nccwpck_require__(2186);
|
const core_1 = __nccwpck_require__(2186);
|
||||||
const os_1 = __importDefault(__nccwpck_require__(2037));
|
const os_1 = __importDefault(__nccwpck_require__(2037));
|
||||||
const Input = {
|
const core = __importStar(__nccwpck_require__(2186));
|
||||||
get testModes() {
|
class Input {
|
||||||
|
static get testModes() {
|
||||||
return ['all', 'playmode', 'editmode', 'standalone'];
|
return ['all', 'playmode', 'editmode', 'standalone'];
|
||||||
},
|
}
|
||||||
isValidFolderName(folderName) {
|
static isValidFolderName(folderName) {
|
||||||
const validFolderName = new RegExp(/^(\.|\.\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
|
const validFolderName = new RegExp(/^(\.|\.\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
|
||||||
return validFolderName.test(folderName);
|
return validFolderName.test(folderName);
|
||||||
},
|
}
|
||||||
isValidGlobalFolderName(folderName) {
|
static isValidGlobalFolderName(folderName) {
|
||||||
const validFolderName = new RegExp(/^(\.|\.\/|\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
|
const validFolderName = new RegExp(/^(\.|\.\/|\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
|
||||||
return validFolderName.test(folderName);
|
return validFolderName.test(folderName);
|
||||||
},
|
}
|
||||||
/**
|
/**
|
||||||
* When in package mode, we need to scrape the package's name from its package.json file
|
* When in package mode, we need to scrape the package's name from its package.json file
|
||||||
*/
|
*/
|
||||||
getPackageNameFromPackageJson(packagePath) {
|
static getPackageNameFromPackageJson(packagePath) {
|
||||||
const packageJsonPath = `${packagePath}/package.json`;
|
const packageJsonPath = `${packagePath}/package.json`;
|
||||||
if (!fs_1.default.existsSync(packageJsonPath)) {
|
if (!fs_1.default.existsSync(packageJsonPath)) {
|
||||||
throw new Error(`Invalid projectPath - Cannot find package.json at ${packageJsonPath}`);
|
throw new Error(`Invalid projectPath - Cannot find package.json at ${packageJsonPath}`);
|
||||||
|
@ -618,21 +670,35 @@ const Input = {
|
||||||
throw new Error(`Package name from package.json is a string, but is empty`);
|
throw new Error(`Package name from package.json is a string, but is empty`);
|
||||||
}
|
}
|
||||||
return rawPackageName;
|
return rawPackageName;
|
||||||
},
|
}
|
||||||
|
static getSerialFromLicenseFile(license) {
|
||||||
|
const startKey = `<DeveloperData Value="`;
|
||||||
|
const endKey = `"/>`;
|
||||||
|
const startIndex = license.indexOf(startKey) + startKey.length;
|
||||||
|
if (startIndex < 0) {
|
||||||
|
throw new Error(`License File was corrupted, unable to locate serial`);
|
||||||
|
}
|
||||||
|
const endIndex = license.indexOf(endKey, startIndex);
|
||||||
|
// Slice off the first 4 characters as they are garbage values
|
||||||
|
return Buffer.from(license.slice(startIndex, endIndex), 'base64').toString('binary').slice(4);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* When in package mode, we need to ensure that the Tests folder is present
|
* When in package mode, we need to ensure that the Tests folder is present
|
||||||
*/
|
*/
|
||||||
verifyTestsFolderIsPresent(packagePath) {
|
static verifyTestsFolderIsPresent(packagePath) {
|
||||||
if (!fs_1.default.existsSync(`${packagePath}/Tests`)) {
|
if (!fs_1.default.existsSync(`${packagePath}/Tests`)) {
|
||||||
throw new Error(`Invalid projectPath - Cannot find package tests folder at ${packagePath}/Tests`);
|
throw new Error(`Invalid projectPath - Cannot find package tests folder at ${packagePath}/Tests`);
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
getFromUser() {
|
static getFromUser() {
|
||||||
|
var _a, _b;
|
||||||
// Input variables specified in workflow using "with" prop.
|
// Input variables specified in workflow using "with" prop.
|
||||||
const unityVersion = (0, core_1.getInput)('unityVersion') || 'auto';
|
const unityVersion = (0, core_1.getInput)('unityVersion') || 'auto';
|
||||||
const customImage = (0, core_1.getInput)('customImage') || '';
|
const customImage = (0, core_1.getInput)('customImage') || '';
|
||||||
const rawProjectPath = (0, core_1.getInput)('projectPath') || '.';
|
const rawProjectPath = (0, core_1.getInput)('projectPath') || '.';
|
||||||
const unityLicensingServer = (0, core_1.getInput)('unityLicensingServer') || '';
|
const unityLicensingServer = (0, core_1.getInput)('unityLicensingServer') || '';
|
||||||
|
const unityLicense = (0, core_1.getInput)('unityLicense') || ((_a = process.env['UNITY_LICENSE']) !== null && _a !== void 0 ? _a : '');
|
||||||
|
let unitySerial = (_b = process.env['UNITY_SERIAL']) !== null && _b !== void 0 ? _b : '';
|
||||||
const customParameters = (0, core_1.getInput)('customParameters') || '';
|
const customParameters = (0, core_1.getInput)('customParameters') || '';
|
||||||
const testMode = ((0, core_1.getInput)('testMode') || 'all').toLowerCase();
|
const testMode = ((0, core_1.getInput)('testMode') || 'all').toLowerCase();
|
||||||
const coverageOptions = (0, core_1.getInput)('coverageOptions') || '';
|
const coverageOptions = (0, core_1.getInput)('coverageOptions') || '';
|
||||||
|
@ -663,6 +729,9 @@ const Input = {
|
||||||
const dockerMemoryLimit = (0, core_1.getInput)('dockerMemoryLimit') ||
|
const dockerMemoryLimit = (0, core_1.getInput)('dockerMemoryLimit') ||
|
||||||
`${Math.floor((os_1.default.totalmem() / bytesInMegabyte) * memoryMultiplier)}m`;
|
`${Math.floor((os_1.default.totalmem() / bytesInMegabyte) * memoryMultiplier)}m`;
|
||||||
const dockerIsolationMode = (0, core_1.getInput)('dockerIsolationMode') || 'default';
|
const dockerIsolationMode = (0, core_1.getInput)('dockerIsolationMode') || 'default';
|
||||||
|
const runAsHostUser = (0, core_1.getInput)('runAsHostUser') || 'false';
|
||||||
|
const containerRegistryRepository = (0, core_1.getInput)('containerRegistryRepository') || 'unityci/editor';
|
||||||
|
const containerRegistryImageVersion = (0, core_1.getInput)('containerRegistryImageVersion') || '3';
|
||||||
// Validate input
|
// Validate input
|
||||||
if (!this.testModes.includes(testMode)) {
|
if (!this.testModes.includes(testMode)) {
|
||||||
throw new Error(`Invalid testMode ${testMode}`);
|
throw new Error(`Invalid testMode ${testMode}`);
|
||||||
|
@ -697,6 +766,23 @@ const Input = {
|
||||||
packageName = this.getPackageNameFromPackageJson(projectPath);
|
packageName = this.getPackageNameFromPackageJson(projectPath);
|
||||||
this.verifyTestsFolderIsPresent(projectPath);
|
this.verifyTestsFolderIsPresent(projectPath);
|
||||||
}
|
}
|
||||||
|
if (runAsHostUser !== 'true' && runAsHostUser !== 'false') {
|
||||||
|
throw new Error(`Invalid runAsHostUser "${runAsHostUser}"`);
|
||||||
|
}
|
||||||
|
if (unityLicensingServer === '' && !unitySerial) {
|
||||||
|
// No serial was present, so it is a personal license that we need to convert
|
||||||
|
if (!unityLicense) {
|
||||||
|
throw new Error(`Missing Unity License File and no Serial was found. If this
|
||||||
|
is a personal license, make sure to follow the activation
|
||||||
|
steps and set the UNITY_LICENSE GitHub secret or enter a Unity
|
||||||
|
serial number inside the UNITY_SERIAL GitHub secret.`);
|
||||||
|
}
|
||||||
|
unitySerial = this.getSerialFromLicenseFile(unityLicense);
|
||||||
|
}
|
||||||
|
if (unitySerial !== undefined && unitySerial.length === 27) {
|
||||||
|
core.setSecret(unitySerial);
|
||||||
|
core.setSecret(`${unitySerial.slice(0, -4)}XXXX`);
|
||||||
|
}
|
||||||
// Sanitise other input
|
// Sanitise other input
|
||||||
const artifactsPath = rawArtifactsPath.replace(/\/$/, '');
|
const artifactsPath = rawArtifactsPath.replace(/\/$/, '');
|
||||||
const sshPublicKeysDirectoryPath = rawSshPublicKeysDirectoryPath.replace(/\/$/, '');
|
const sshPublicKeysDirectoryPath = rawSshPublicKeysDirectoryPath.replace(/\/$/, '');
|
||||||
|
@ -724,9 +810,13 @@ const Input = {
|
||||||
dockerMemoryLimit,
|
dockerMemoryLimit,
|
||||||
dockerIsolationMode,
|
dockerIsolationMode,
|
||||||
unityLicensingServer,
|
unityLicensingServer,
|
||||||
|
runAsHostUser,
|
||||||
|
containerRegistryRepository,
|
||||||
|
containerRegistryImageVersion,
|
||||||
|
unitySerial,
|
||||||
};
|
};
|
||||||
},
|
}
|
||||||
};
|
}
|
||||||
exports["default"] = Input;
|
exports["default"] = Input;
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,100 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
if [[ -n "$UNITY_SERIAL" && -n "$UNITY_EMAIL" && -n "$UNITY_PASSWORD" ]]; then
|
||||||
|
#
|
||||||
|
# SERIAL LICENSE MODE
|
||||||
|
#
|
||||||
|
# This will activate unity, using the activating process.
|
||||||
|
#
|
||||||
|
echo "Requesting activation"
|
||||||
|
|
||||||
|
# Loop the unity-editor call until the license is activated with exponential backoff and a maximum of 5 retries
|
||||||
|
retry_count=0
|
||||||
|
|
||||||
|
# Initialize delay to 15 seconds
|
||||||
|
delay=15
|
||||||
|
|
||||||
|
# Loop until UNITY_EXIT_CODE is 0 or retry count reaches 5
|
||||||
|
while [[ $retry_count -lt 5 ]]
|
||||||
|
do
|
||||||
|
# Activate license
|
||||||
|
unity-editor \
|
||||||
|
-logFile /dev/stdout \
|
||||||
|
-quit \
|
||||||
|
-serial "$UNITY_SERIAL" \
|
||||||
|
-username "$UNITY_EMAIL" \
|
||||||
|
-password "$UNITY_PASSWORD" \
|
||||||
|
-projectPath "/BlankProject"
|
||||||
|
|
||||||
|
# Store the exit code from the verify command
|
||||||
|
UNITY_EXIT_CODE=$?
|
||||||
|
|
||||||
|
# Check if UNITY_EXIT_CODE is 0
|
||||||
|
if [[ $UNITY_EXIT_CODE -eq 0 ]]
|
||||||
|
then
|
||||||
|
echo "Activation successful"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
# Increment retry count
|
||||||
|
((retry_count++))
|
||||||
|
|
||||||
|
echo "::warning ::Activation failed, attempting retry #$retry_count"
|
||||||
|
echo "Activation failed, retrying in $delay seconds..."
|
||||||
|
sleep $delay
|
||||||
|
|
||||||
|
# Double the delay for the next iteration
|
||||||
|
delay=$((delay * 2))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $retry_count -eq 5 ]]
|
||||||
|
then
|
||||||
|
echo "Activation failed after 5 retries"
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [[ -n "$UNITY_LICENSING_SERVER" ]]; then
|
||||||
|
#
|
||||||
|
# Custom Unity License Server
|
||||||
|
#
|
||||||
|
echo "Adding licensing server config"
|
||||||
|
|
||||||
|
/opt/unity/Editor/Data/Resources/Licensing/Client/Unity.Licensing.Client --acquire-floating > license.txt #is this accessible in a env variable?
|
||||||
|
UNITY_EXIT_CODE=$?
|
||||||
|
PARSEDFILE=$(grep -oP '\".*?\"' < license.txt | tr -d '"')
|
||||||
|
export FLOATING_LICENSE
|
||||||
|
FLOATING_LICENSE=$(sed -n 2p <<< "$PARSEDFILE")
|
||||||
|
FLOATING_LICENSE_TIMEOUT=$(sed -n 4p <<< "$PARSEDFILE")
|
||||||
|
|
||||||
|
echo "Acquired floating license: \"$FLOATING_LICENSE\" with timeout $FLOATING_LICENSE_TIMEOUT"
|
||||||
|
# Store the exit code from the verify command
|
||||||
|
else
|
||||||
|
#
|
||||||
|
# NO LICENSE ACTIVATION STRATEGY MATCHED
|
||||||
|
#
|
||||||
|
# This will exit since no activation strategies could be matched.
|
||||||
|
#
|
||||||
|
echo "License activation strategy could not be determined."
|
||||||
|
echo ""
|
||||||
|
echo "Visit https://game.ci/docs/github/activation for more"
|
||||||
|
echo "details on how to set up one of the possible activation strategies."
|
||||||
|
|
||||||
|
echo "::error ::No valid license activation strategy could be determined. Make sure to provide UNITY_EMAIL, UNITY_PASSWORD, and either a UNITY_SERIAL \
|
||||||
|
or UNITY_LICENSE. Otherwise please use UNITY_LICENSING_SERVER."
|
||||||
|
# Immediately exit as no UNITY_EXIT_CODE can be derived.
|
||||||
|
exit 1;
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Display information about the result
|
||||||
|
#
|
||||||
|
if [ $UNITY_EXIT_CODE -eq 0 ]; then
|
||||||
|
# Activation was a success
|
||||||
|
echo "Activation complete."
|
||||||
|
else
|
||||||
|
# Activation failed so exit with the code from the license verification step
|
||||||
|
echo "Unclassified error occured while trying to activate license."
|
||||||
|
echo "Exit code was: $UNITY_EXIT_CODE"
|
||||||
|
echo "::error ::There was an error while trying to activate the Unity license."
|
||||||
|
exit $UNITY_EXIT_CODE
|
||||||
|
fi
|
|
@ -0,0 +1,43 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Ensure machine ID is randomized for personal license activation
|
||||||
|
if [[ "$UNITY_SERIAL" = F* ]]; then
|
||||||
|
echo "Randomizing machine ID for personal license activation"
|
||||||
|
dbus-uuidgen > /etc/machine-id && mkdir -p /var/lib/dbus/ && ln -sf /etc/machine-id /var/lib/dbus/machine-id
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$RUN_AS_HOST_USER" == "true" ]]; then
|
||||||
|
echo "Running as host user"
|
||||||
|
|
||||||
|
# Stop on error if we can't set up the user
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Get host user/group info so we create files with the correct ownership
|
||||||
|
USERNAME=$(stat -c '%U' "$fullProjectPath")
|
||||||
|
USERID=$(stat -c '%u' "$fullProjectPath")
|
||||||
|
GROUPNAME=$(stat -c '%G' "$fullProjectPath")
|
||||||
|
GROUPID=$(stat -c '%g' "$fullProjectPath")
|
||||||
|
|
||||||
|
groupadd -g $GROUPID $GROUPNAME
|
||||||
|
useradd -u $USERID -g $GROUPID $USERNAME
|
||||||
|
usermod -aG $GROUPNAME $USERNAME
|
||||||
|
mkdir -p "/home/$USERNAME"
|
||||||
|
chown $USERNAME:$GROUPNAME "/home/$USERNAME"
|
||||||
|
|
||||||
|
# Normally need root permissions to access when using su
|
||||||
|
chmod 777 /dev/stdout
|
||||||
|
chmod 777 /dev/stderr
|
||||||
|
|
||||||
|
# Don't stop on error when running our scripts as error handling is baked in
|
||||||
|
set +e
|
||||||
|
|
||||||
|
# Switch to the host user so we can create files with the correct ownership
|
||||||
|
su $USERNAME -c "$SHELL -c 'source /steps/run_steps.sh'"
|
||||||
|
else
|
||||||
|
echo "Running as root"
|
||||||
|
|
||||||
|
# Run as root
|
||||||
|
source /steps/run_steps.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit $?
|
|
@ -1,10 +1,6 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# Run in ACTIVATE_LICENSE_PATH directory
|
if [[ -n "$UNITY_LICENSING_SERVER" ]]; then
|
||||||
echo "Changing to \"$ACTIVATE_LICENSE_PATH\" directory."
|
|
||||||
pushd "$ACTIVATE_LICENSE_PATH"
|
|
||||||
|
|
||||||
if [[ -n "$UNITY_LICENSING_SERVER" ]]; then #
|
|
||||||
#
|
#
|
||||||
# Return any floating license used.
|
# Return any floating license used.
|
||||||
#
|
#
|
||||||
|
@ -12,16 +8,15 @@ if [[ -n "$UNITY_LICENSING_SERVER" ]]; then #
|
||||||
/opt/unity/Editor/Data/Resources/Licensing/Client/Unity.Licensing.Client --return-floating "$FLOATING_LICENSE"
|
/opt/unity/Editor/Data/Resources/Licensing/Client/Unity.Licensing.Client --return-floating "$FLOATING_LICENSE"
|
||||||
elif [[ -n "$UNITY_SERIAL" ]]; then
|
elif [[ -n "$UNITY_SERIAL" ]]; then
|
||||||
#
|
#
|
||||||
# PROFESSIONAL (SERIAL) LICENSE MODE
|
# SERIAL LICENSE MODE
|
||||||
#
|
#
|
||||||
# This will return the license that is currently in use.
|
# This will return the license that is currently in use.
|
||||||
#
|
#
|
||||||
unity-editor \
|
unity-editor \
|
||||||
-batchmode \
|
|
||||||
-nographics \
|
|
||||||
-logFile /dev/stdout \
|
-logFile /dev/stdout \
|
||||||
-quit \
|
-quit \
|
||||||
-returnlicense
|
-returnlicense \
|
||||||
|
-username "$UNITY_EMAIL" \
|
||||||
|
-password "$UNITY_PASSWORD" \
|
||||||
|
-projectPath "/BlankProject"
|
||||||
fi
|
fi
|
||||||
# Return to previous working directory
|
|
||||||
popd
|
|
|
@ -1,28 +1,20 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
#
|
|
||||||
# Create directory for license activation
|
|
||||||
#
|
|
||||||
|
|
||||||
ACTIVATE_LICENSE_PATH="$GITHUB_WORKSPACE/_activate-license"
|
|
||||||
mkdir -p "$ACTIVATE_LICENSE_PATH"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Run steps
|
# Run steps
|
||||||
#
|
#
|
||||||
|
|
||||||
source /steps/activate.sh
|
|
||||||
source /steps/set_extra_git_configs.sh
|
source /steps/set_extra_git_configs.sh
|
||||||
source /steps/set_gitcredential.sh
|
source /steps/set_gitcredential.sh
|
||||||
|
source /steps/activate.sh
|
||||||
|
|
||||||
|
# If we didn't activate successfully, exit with the exit code from the activation step.
|
||||||
|
if [[ $UNITY_EXIT_CODE -ne 0 ]]; then
|
||||||
|
exit $UNITY_EXIT_CODE
|
||||||
|
fi
|
||||||
|
|
||||||
source /steps/run_tests.sh
|
source /steps/run_tests.sh
|
||||||
source /steps/return_license.sh
|
source /steps/return_license.sh
|
||||||
|
|
||||||
#
|
|
||||||
# Remove license activation directory
|
|
||||||
#
|
|
||||||
|
|
||||||
rm -r "$ACTIVATE_LICENSE_PATH"
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Instructions for debugging
|
# Instructions for debugging
|
||||||
#
|
#
|
|
@ -186,8 +186,8 @@ for platform in ${TEST_PLATFORMS//;/ }; do
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
# Code Coverage currently only supports code ran in the Editor and not in Standalone/Player.
|
# Code Coverage currently only supports code ran in the Editor and not in Standalone/Player.
|
||||||
# https://docs.unity.cn/Packages/com.unity.testtools.codecoverage@1.1/manual/TechnicalDetails.html#how-it-works
|
# https://docs.unity3d.com/Packages/com.unity.testtools.codecoverage@1.2/manual/TechnicalDetails.html#how-it-works
|
||||||
|
|
||||||
xvfb-run -a -e /dev/stdout "$UNITY_PROJECT_PATH/Build/UnityTestRunner-Standalone" \
|
xvfb-run -a -e /dev/stdout "$UNITY_PROJECT_PATH/Build/UnityTestRunner-Standalone" \
|
||||||
-batchmode \
|
-batchmode \
|
||||||
-nographics \
|
-nographics \
|
0
dist/steps/set_extra_git_configs.sh → dist/platforms/ubuntu/set_extra_git_configs.sh
vendored
100644 → 100755
0
dist/steps/set_extra_git_configs.sh → dist/platforms/ubuntu/set_extra_git_configs.sh
vendored
100644 → 100755
|
@ -7,10 +7,10 @@ else
|
||||||
echo "GIT_PRIVATE_TOKEN is set configuring git credentials"
|
echo "GIT_PRIVATE_TOKEN is set configuring git credentials"
|
||||||
|
|
||||||
git config --global credential.helper store
|
git config --global credential.helper store
|
||||||
git config --global --replace-all url.https://github.com/.insteadOf ssh://git@github.com/
|
git config --global --replace-all url."https://token:$GIT_PRIVATE_TOKEN@github.com/".insteadOf ssh://git@github.com/
|
||||||
git config --global --add url.https://github.com/.insteadOf git@github.com
|
git config --global --add url."https://token:$GIT_PRIVATE_TOKEN@github.com/".insteadOf git@github.com
|
||||||
|
git config --global --add url."https://token:$GIT_PRIVATE_TOKEN@github.com/".insteadOf "https://github.com/"
|
||||||
|
|
||||||
git config --global url."https://token:$GIT_PRIVATE_TOKEN@github.com/".insteadOf "https://github.com/"
|
|
||||||
git config --global url."https://ssh:$GIT_PRIVATE_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
|
git config --global url."https://ssh:$GIT_PRIVATE_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
|
||||||
git config --global url."https://git:$GIT_PRIVATE_TOKEN@github.com/".insteadOf "git@github.com:"
|
git config --global url."https://git:$GIT_PRIVATE_TOKEN@github.com/".insteadOf "git@github.com:"
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
# Activates Unity
|
||||||
|
|
||||||
|
Write-Output ""
|
||||||
|
Write-Output "###########################"
|
||||||
|
Write-Output "# Activating #"
|
||||||
|
Write-Output "###########################"
|
||||||
|
Write-Output ""
|
||||||
|
|
||||||
|
if ( ($null -ne ${env:UNITY_SERIAL}) -and ($null -ne ${env:UNITY_EMAIL}) -and ($null -ne ${env:UNITY_PASSWORD}) )
|
||||||
|
{
|
||||||
|
#
|
||||||
|
# SERIAL LICENSE MODE
|
||||||
|
#
|
||||||
|
# This will activate unity, using the serial activation process.
|
||||||
|
#
|
||||||
|
Write-Output "Requesting activation"
|
||||||
|
|
||||||
|
$ACTIVATION_OUTPUT = Start-Process -FilePath "$Env:UNITY_PATH/Editor/Unity.exe" `
|
||||||
|
-NoNewWindow `
|
||||||
|
-PassThru `
|
||||||
|
-ArgumentList "-batchmode `
|
||||||
|
-quit `
|
||||||
|
-nographics `
|
||||||
|
-username $Env:UNITY_EMAIL `
|
||||||
|
-password $Env:UNITY_PASSWORD `
|
||||||
|
-serial $Env:UNITY_SERIAL `
|
||||||
|
-projectPath c:/BlankProject `
|
||||||
|
-logfile -"
|
||||||
|
|
||||||
|
# Cache the handle so exit code works properly
|
||||||
|
# https://stackoverflow.com/questions/10262231/obtaining-exitcode-using-start-process-and-waitforexit-instead-of-wait
|
||||||
|
$unityHandle = $ACTIVATION_OUTPUT.Handle
|
||||||
|
|
||||||
|
while ($true) {
|
||||||
|
if ($ACTIVATION_OUTPUT.HasExited) {
|
||||||
|
$ACTIVATION_EXIT_CODE = $ACTIVATION_OUTPUT.ExitCode
|
||||||
|
|
||||||
|
# Display results
|
||||||
|
if ($ACTIVATION_EXIT_CODE -eq 0)
|
||||||
|
{
|
||||||
|
Write-Output "Activation Succeeded"
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
Write-Output "Activation failed, with exit code $ACTIVATION_EXIT_CODE"
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#
|
||||||
|
# NO LICENSE ACTIVATION STRATEGY MATCHED
|
||||||
|
#
|
||||||
|
# This will exit since no activation strategies could be matched.
|
||||||
|
#
|
||||||
|
Write-Output "License activation strategy could not be determined."
|
||||||
|
Write-Output ""
|
||||||
|
Write-Output "Visit https://game.ci/docs/github/activation for more"
|
||||||
|
Write-Output "details on how to set up one of the possible activation strategies."
|
||||||
|
|
||||||
|
Write-Output "::error ::No valid license activation strategy could be determined. Make sure to provide UNITY_EMAIL, UNITY_PASSWORD, and either a UNITY_SERIAL \
|
||||||
|
or UNITY_LICENSE. See more info at https://game.ci/docs/github/activation"
|
||||||
|
|
||||||
|
$ACTIVATION_EXIT_CODE = 1;
|
||||||
|
}
|
|
@ -1,24 +1,19 @@
|
||||||
#
|
|
||||||
# Create directory for license activation
|
|
||||||
#
|
|
||||||
|
|
||||||
$ACTIVATE_LICENSE_PATH = "${env:GITHUB_WORKSPACE}/_activate-license"
|
|
||||||
New-Item -Path "$ACTIVATE_LICENSE_PATH" -ItemType Directory
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Run steps
|
# Run steps
|
||||||
#
|
#
|
||||||
|
|
||||||
& $PSScriptRoot\steps\activate.ps1
|
. "c:\steps\set_gitcredential.ps1"
|
||||||
& $PSScriptRoot\steps\set_gitcredential.ps1
|
|
||||||
& $PSScriptRoot\steps\run_tests.ps1
|
|
||||||
& $PSScriptRoot\steps\return_license.ps1
|
|
||||||
|
|
||||||
#
|
. "c:\steps\activate.ps1"
|
||||||
# Remove license activation directory
|
|
||||||
#
|
|
||||||
|
|
||||||
Remove-Item "$ACTIVATE_LICENSE_PATH" -Recurse -Force
|
# If we didn't activate successfully, exit with the exit code from the activation step.
|
||||||
|
if ($ACTIVATION_EXIT_CODE -ne 0) {
|
||||||
|
exit $ACTIVATION_EXIT_CODE
|
||||||
|
}
|
||||||
|
|
||||||
|
. "c:\steps\run_tests.ps1"
|
||||||
|
|
||||||
|
. "c:\steps\return_license.ps1"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Instructions for debugging
|
# Instructions for debugging
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Return the active Unity license
|
||||||
|
|
||||||
|
Write-Output ""
|
||||||
|
Write-Output "###########################"
|
||||||
|
Write-Output "# Return License #"
|
||||||
|
Write-Output "###########################"
|
||||||
|
Write-Output ""
|
||||||
|
|
||||||
|
if (($null -ne ${env:UNITY_SERIAL}) -and ($null -ne ${env:UNITY_EMAIL}) -and ($null -ne ${env:UNITY_PASSWORD}))
|
||||||
|
{
|
||||||
|
#
|
||||||
|
# SERIAL LICENSE MODE
|
||||||
|
#
|
||||||
|
# This will return the license that is currently in use.
|
||||||
|
#
|
||||||
|
$RETURN_LICENSE_OUTPUT = Start-Process -FilePath "$Env:UNITY_PATH/Editor/Unity.exe" `
|
||||||
|
-NoNewWindow `
|
||||||
|
-PassThru `
|
||||||
|
-ArgumentList "-batchmode `
|
||||||
|
-quit `
|
||||||
|
-nographics `
|
||||||
|
-username $Env:UNITY_EMAIL `
|
||||||
|
-password $Env:UNITY_PASSWORD `
|
||||||
|
-returnlicense `
|
||||||
|
-projectPath c:/BlankProject `
|
||||||
|
-logfile -"
|
||||||
|
|
||||||
|
# Cache the handle so exit code works properly
|
||||||
|
# https://stackoverflow.com/questions/10262231/obtaining-exitcode-using-start-process-and-waitforexit-instead-of-wait
|
||||||
|
$unityHandle = $RETURN_LICENSE_OUTPUT.Handle
|
||||||
|
|
||||||
|
while ($true) {
|
||||||
|
if ($RETURN_LICENSE_OUTPUT.HasExited) {
|
||||||
|
$RETURN_LICENSE_EXIT_CODE = $RETURN_LICENSE_OUTPUT.ExitCode
|
||||||
|
|
||||||
|
# Display results
|
||||||
|
if ($RETURN_LICENSE_EXIT_CODE -eq 0)
|
||||||
|
{
|
||||||
|
Write-Output "License Return Succeeded"
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
Write-Output "License Return failed, with exit code $RETURN_LICENSE_EXIT_CODE"
|
||||||
|
Write-Output "::warning ::License Return failed! If this is a Pro License you might need to manually `
|
||||||
|
free the seat in your Unity admin panel or you might run out of seats to activate with."
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
Start-Sleep -Seconds 3
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
if ($null -eq ${env:GIT_PRIVATE_TOKEN})
|
||||||
|
{
|
||||||
|
Write-Output "GIT_PRIVATE_TOKEN unset skipping"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host "GIT_PRIVATE_TOKEN is set configuring git credentials"
|
||||||
|
|
||||||
|
git config --global credential.helper store
|
||||||
|
git config --global --replace-all "url.https://token:$env:GIT_PRIVATE_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
|
||||||
|
git config --global --add "url.https://token:$env:GIT_PRIVATE_TOKEN@github.com/".insteadOf "git@github.com"
|
||||||
|
git config --global --add "url.https://token:$env:GIT_PRIVATE_TOKEN@github.com/".insteadOf "https://github.com/"
|
||||||
|
|
||||||
|
git config --global "url.https://ssh:$env:GIT_PRIVATE_TOKEN@github.com/".insteadOf "ssh://git@github.com/"
|
||||||
|
git config --global "url.https://git:$env:GIT_PRIVATE_TOKEN@github.com/".insteadOf "git@github.com:"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Output "---------- git config --list -------------"
|
||||||
|
git config --list
|
||||||
|
|
||||||
|
Write-Output "---------- git config --list --show-origin -------------"
|
||||||
|
git config --list --show-origin
|
|
@ -1,110 +0,0 @@
|
||||||
# Run in ACTIVATE_LICENSE_PATH directory
|
|
||||||
Write-Output "Changing to $ACTIVATE_LICENSE_PATH directory."
|
|
||||||
Push-Location "$ACTIVATE_LICENSE_PATH"
|
|
||||||
|
|
||||||
if ( ($null -ne ${env:UNITY_LICENSE}) -or ($null -ne ${env:UNITY_LICENSE_FILE}) )
|
|
||||||
{
|
|
||||||
#
|
|
||||||
# PERSONAL LICENSE MODE
|
|
||||||
#
|
|
||||||
# This will activate Unity, using a license file
|
|
||||||
#
|
|
||||||
# Note that this is the ONLY WAY for PERSONAL LICENSES in 2020.
|
|
||||||
# * See for more details: https://gitlab.com/gableroux/unity3d-gitlab-ci-example/issues/5#note_72815478
|
|
||||||
#
|
|
||||||
# The license file can be acquired using `game-ci/request-manual-activation-file` action.
|
|
||||||
Write-Output "Requesting activation (personal license)"
|
|
||||||
|
|
||||||
# Set the license file path
|
|
||||||
$FILE_PATH = "$ACTIVATE_LICENSE_PATH\UnityLicenseFile.ulf"
|
|
||||||
|
|
||||||
if ($null -ne ${env:UNITY_LICENSE})
|
|
||||||
{
|
|
||||||
# Copy license file from Github variables
|
|
||||||
Add-Content -Path $FILE_PATH -Value ${env:UNITY_LICENSE}
|
|
||||||
}
|
|
||||||
elseif ($null -ne ${env:UNITY_LICENSE_FILE})
|
|
||||||
{
|
|
||||||
# Copy license file from file system
|
|
||||||
Add-Content -Path $FILE_PATH -Value ${env:UNITY_LICENSE_FILE}
|
|
||||||
}
|
|
||||||
$convert = (Get-Content -Raw $FILE_PATH) -replace "`r`n","`n"
|
|
||||||
[io.file]::WriteAllText($FILE_PATH, $convert)
|
|
||||||
Get-ChildItem -Path $FILE_PATH
|
|
||||||
|
|
||||||
# Activate license
|
|
||||||
$ACTIVATION_OUTPUT = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\${env:UNITY_VERSION}\editor\Unity.exe" -ArgumentList "-batchmode -nographics -logFile $ACTIVATE_LICENSE_PATH\activate.log -quit -manualLicenseFile $FILE_PATH"
|
|
||||||
|
|
||||||
# Store the exit code from the verify command
|
|
||||||
$UNITY_EXIT_CODE = $ACTIVATION_OUTPUT.ExitCode
|
|
||||||
|
|
||||||
# The exit code for personal activation is always 1;
|
|
||||||
# Determine whether activation was successful.
|
|
||||||
#
|
|
||||||
# Successful output should include the following:
|
|
||||||
#
|
|
||||||
# "LICENSE SYSTEM [2020120 18:51:20] Next license update check is after 2019-11-25T18:23:38"
|
|
||||||
#
|
|
||||||
$ACTIVATION_SUCCESSFUL = (Get-Content $ACTIVATE_LICENSE_PATH\activate.log | Select-String 'Next license update check is after' | Measure-Object -line | Select-Object -Expand Lines)
|
|
||||||
|
|
||||||
# Set exit code to 0 if activation was successful
|
|
||||||
if ($ACTIVATION_SUCCESSFUL -eq 1)
|
|
||||||
{
|
|
||||||
$UNITY_EXIT_CODE = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Remove license file
|
|
||||||
Remove-Item -Force $FILE_PATH
|
|
||||||
}
|
|
||||||
elseif ( ($null -ne ${env:UNITY_SERIAL}) -and ($null -ne ${env:UNITY_EMAIL}) -and ($null -ne ${env:UNITY_PASSWORD}) )
|
|
||||||
{
|
|
||||||
#
|
|
||||||
# PROFESSIONAL (SERIAL) LICENSE MODE
|
|
||||||
#
|
|
||||||
# This will activate unity, using the activating process.
|
|
||||||
#
|
|
||||||
# Note: This is the preferred way for PROFESSIONAL LICENSES.
|
|
||||||
#
|
|
||||||
Write-Output "Requesting activation (professional license)"
|
|
||||||
|
|
||||||
# Activate license
|
|
||||||
$ACTIVATION_OUTPUT = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\${env:UNITY_VERSION}\editor\Unity.exe" -ArgumentList "-batchmode -nographics -logFile $ACTIVATE_LICENSE_PATH\activate.log -quit -serial ${env:UNITY_SERIAL} -username ${env:UNITY_EMAIL} -password ${env:UNITY_PASSWORD}"
|
|
||||||
|
|
||||||
# Store the exit code from the verify command
|
|
||||||
$UNITY_EXIT_CODE = $ACTIVATION_OUTPUT.ExitCode
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
#
|
|
||||||
# NO LICENSE ACTIVATION STRATEGY MATCHED
|
|
||||||
#
|
|
||||||
# This will exit since no activation strategies could be matched.
|
|
||||||
#
|
|
||||||
Write-Output "License activation strategy could not be determined."
|
|
||||||
Write-Output ""
|
|
||||||
Write-Output "Visit https://game.ci/docs/github/getting-started for more"
|
|
||||||
Write-Output "details on how to set up one of the possible activation strategies."
|
|
||||||
|
|
||||||
# Immediately exit as no UNITY_EXIT_CODE can be derived.
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Display information about the result
|
|
||||||
#
|
|
||||||
Get-Content $ACTIVATE_LICENSE_PATH\activate.log
|
|
||||||
if ($UNITY_EXIT_CODE -eq 0)
|
|
||||||
{
|
|
||||||
# Activation was a success
|
|
||||||
Write-Output "Activation complete."
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
# Activation failed so exit with the code from the license verification step
|
|
||||||
Write-Output "Unclassified error occured while trying to activate license."
|
|
||||||
Write-Output "Exit code was: $UNITY_EXIT_CODE"
|
|
||||||
exit $UNITY_EXIT_CODE
|
|
||||||
}
|
|
||||||
|
|
||||||
# Return to previous working directory
|
|
||||||
Pop-Location
|
|
|
@ -1,125 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Run in ACTIVATE_LICENSE_PATH directory
|
|
||||||
echo "Changing to \"$ACTIVATE_LICENSE_PATH\" directory."
|
|
||||||
pushd "$ACTIVATE_LICENSE_PATH"
|
|
||||||
|
|
||||||
if [[ -n "$UNITY_LICENSE" ]] || [[ -n "$UNITY_LICENSE_FILE" ]]; then
|
|
||||||
#
|
|
||||||
# PERSONAL LICENSE MODE
|
|
||||||
#
|
|
||||||
# This will activate Unity, using a license file
|
|
||||||
#
|
|
||||||
# Note that this is the ONLY WAY for PERSONAL LICENSES in 2020.
|
|
||||||
# * See for more details: https://gitlab.com/gableroux/unity3d-gitlab-ci-example/issues/5#note_72815478
|
|
||||||
#
|
|
||||||
# The license file can be acquired using `game-ci/request-manual-activation-file` action.
|
|
||||||
echo "Requesting activation (personal license)"
|
|
||||||
|
|
||||||
# Set the license file path
|
|
||||||
FILE_PATH=UnityLicenseFile.ulf
|
|
||||||
|
|
||||||
if [[ -n "$UNITY_LICENSE" ]]; then
|
|
||||||
# Copy license file from Github variables
|
|
||||||
echo "$UNITY_LICENSE" | tr -d '\r' > $FILE_PATH
|
|
||||||
elif [[ -n "$UNITY_LICENSE_FILE" ]]; then
|
|
||||||
# Copy license file from file system
|
|
||||||
cat "$UNITY_LICENSE_FILE" | tr -d '\r' > $FILE_PATH
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Activate license
|
|
||||||
ACTIVATION_OUTPUT=$(unity-editor \
|
|
||||||
-batchmode \
|
|
||||||
-nographics \
|
|
||||||
-logFile /dev/stdout \
|
|
||||||
-quit \
|
|
||||||
-manualLicenseFile $FILE_PATH)
|
|
||||||
|
|
||||||
# Store the exit code from the verify command
|
|
||||||
UNITY_EXIT_CODE=$?
|
|
||||||
|
|
||||||
# The exit code for personal activation is always 1;
|
|
||||||
# Determine whether activation was successful.
|
|
||||||
#
|
|
||||||
# Successful output should include the following:
|
|
||||||
#
|
|
||||||
# "LICENSE SYSTEM [2020120 18:51:20] Next license update check is after 2019-11-25T18:23:38"
|
|
||||||
#
|
|
||||||
ACTIVATION_SUCCESSFUL=$(echo $ACTIVATION_OUTPUT | grep 'Next license update check is after' | wc -l)
|
|
||||||
|
|
||||||
# Set exit code to 0 if activation was successful
|
|
||||||
if [[ $ACTIVATION_SUCCESSFUL -eq 1 ]]; then
|
|
||||||
UNITY_EXIT_CODE=0
|
|
||||||
fi;
|
|
||||||
|
|
||||||
# Remove license file
|
|
||||||
rm -f $FILE_PATH
|
|
||||||
|
|
||||||
elif [[ -n "$UNITY_SERIAL" && -n "$UNITY_EMAIL" && -n "$UNITY_PASSWORD" ]]; then
|
|
||||||
#
|
|
||||||
# PROFESSIONAL (SERIAL) LICENSE MODE
|
|
||||||
#
|
|
||||||
# This will activate unity, using the activating process.
|
|
||||||
#
|
|
||||||
# Note: This is the preferred way for PROFESSIONAL LICENSES.
|
|
||||||
#
|
|
||||||
echo "Requesting activation (professional license)"
|
|
||||||
|
|
||||||
# Activate license
|
|
||||||
unity-editor \
|
|
||||||
-batchmode \
|
|
||||||
-nographics \
|
|
||||||
-logFile /dev/stdout \
|
|
||||||
-quit \
|
|
||||||
-serial "$UNITY_SERIAL" \
|
|
||||||
-username "$UNITY_EMAIL" \
|
|
||||||
-password "$UNITY_PASSWORD"
|
|
||||||
|
|
||||||
# Store the exit code from the verify command
|
|
||||||
UNITY_EXIT_CODE=$?
|
|
||||||
elif [[ -n "$UNITY_LICENSING_SERVER" ]]; then
|
|
||||||
#
|
|
||||||
# Custom Unity License Server
|
|
||||||
#
|
|
||||||
echo "Adding licensing server config"
|
|
||||||
|
|
||||||
/opt/unity/Editor/Data/Resources/Licensing/Client/Unity.Licensing.Client --acquire-floating > license.txt #is this accessible in a env variable?
|
|
||||||
UNITY_EXIT_CODE=$?
|
|
||||||
PARSEDFILE=$(grep -oP '\".*?\"' < license.txt | tr -d '"')
|
|
||||||
export FLOATING_LICENSE
|
|
||||||
FLOATING_LICENSE=$(sed -n 2p <<< "$PARSEDFILE")
|
|
||||||
FLOATING_LICENSE_TIMEOUT=$(sed -n 4p <<< "$PARSEDFILE")
|
|
||||||
|
|
||||||
echo "Acquired floating license: \"$FLOATING_LICENSE\" with timeout $FLOATING_LICENSE_TIMEOUT"
|
|
||||||
# Store the exit code from the verify command
|
|
||||||
else
|
|
||||||
#
|
|
||||||
# NO LICENSE ACTIVATION STRATEGY MATCHED
|
|
||||||
#
|
|
||||||
# This will exit since no activation strategies could be matched.
|
|
||||||
#
|
|
||||||
echo "License activation strategy could not be determined."
|
|
||||||
echo ""
|
|
||||||
echo "Visit https://game.ci/docs/github/getting-started for more"
|
|
||||||
echo "details on how to set up one of the possible activation strategies."
|
|
||||||
|
|
||||||
# Immediately exit as no UNITY_EXIT_CODE can be derived.
|
|
||||||
exit 1;
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# Display information about the result
|
|
||||||
#
|
|
||||||
if [ $UNITY_EXIT_CODE -eq 0 ]; then
|
|
||||||
# Activation was a success
|
|
||||||
echo "Activation complete."
|
|
||||||
else
|
|
||||||
# Activation failed so exit with the code from the license verification step
|
|
||||||
echo "Unclassified error occured while trying to activate license."
|
|
||||||
echo "Exit code was: $UNITY_EXIT_CODE"
|
|
||||||
exit $UNITY_EXIT_CODE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Return to previous working directory
|
|
||||||
popd
|
|
|
@ -1,18 +0,0 @@
|
||||||
# Run in ACTIVATE_LICENSE_PATH directory
|
|
||||||
Write-Output "Changing to $ACTIVATE_LICENSE_PATH directory."
|
|
||||||
Push-Location "$ACTIVATE_LICENSE_PATH"
|
|
||||||
|
|
||||||
if ($null -ne ${env:UNITY_SERIAL})
|
|
||||||
{
|
|
||||||
#
|
|
||||||
# PROFESSIONAL (SERIAL) LICENSE MODE
|
|
||||||
#
|
|
||||||
# This will return the license that is currently in use.
|
|
||||||
#
|
|
||||||
$RETURN_OUTPUT = Start-Process -NoNewWindow -Wait -PassThru "C:\Program Files\Unity\Hub\Editor\${env:UNITY_VERSION}\editor\Unity.exe" -ArgumentList "-batchmode -nographics -logFile $FULL_ARTIFACTS_PATH\deactivate.log -quit -returnlicense"
|
|
||||||
|
|
||||||
Get-Content $FULL_ARTIFACTS_PATH\deactivate.log
|
|
||||||
}
|
|
||||||
|
|
||||||
# Return to previous working directory
|
|
||||||
Pop-Location
|
|
|
@ -1,22 +0,0 @@
|
||||||
if ($null -eq ${env:GIT_PRIVATE_TOKEN})
|
|
||||||
{
|
|
||||||
Write-Output "GIT_PRIVATE_TOKEN unset skipping"
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Write-Output "GIT_PRIVATE_TOKEN is set configuring git credentials"
|
|
||||||
|
|
||||||
git config --global credential.helper store
|
|
||||||
git config --global --replace-all url.https://github.com/.insteadOf ssh://git@github.com/
|
|
||||||
git config --global --add url.https://github.com/.insteadOf git@github.com
|
|
||||||
|
|
||||||
git config --global url."https://token:${env:GIT_PRIVATE_TOKEN}@github.com/".insteadOf "https://github.com/"
|
|
||||||
git config --global url."https://ssh:${env:GIT_PRIVATE_TOKEN}@github.com/".insteadOf "ssh://git@github.com/"
|
|
||||||
git config --global url."https://git:${env:GIT_PRIVATE_TOKEN}@github.com/".insteadOf "git@github.com:"
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Output "---------- git config --list -------------"
|
|
||||||
git config --list
|
|
||||||
|
|
||||||
Write-Output "---------- git config --list --show-origin -------------"
|
|
||||||
git config --list --show-origin
|
|
13
src/main.ts
13
src/main.ts
|
@ -27,8 +27,17 @@ export async function run() {
|
||||||
dockerMemoryLimit,
|
dockerMemoryLimit,
|
||||||
dockerIsolationMode,
|
dockerIsolationMode,
|
||||||
unityLicensingServer,
|
unityLicensingServer,
|
||||||
|
runAsHostUser,
|
||||||
|
containerRegistryRepository,
|
||||||
|
containerRegistryImageVersion,
|
||||||
|
unitySerial,
|
||||||
} = Input.getFromUser();
|
} = Input.getFromUser();
|
||||||
const baseImage = new ImageTag({ editorVersion, customImage });
|
const baseImage = new ImageTag({
|
||||||
|
editorVersion,
|
||||||
|
customImage,
|
||||||
|
containerRegistryRepository,
|
||||||
|
containerRegistryImageVersion,
|
||||||
|
});
|
||||||
const runnerContext = Action.runnerContext();
|
const runnerContext = Action.runnerContext();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -53,6 +62,8 @@ export async function run() {
|
||||||
dockerMemoryLimit,
|
dockerMemoryLimit,
|
||||||
dockerIsolationMode,
|
dockerIsolationMode,
|
||||||
unityLicensingServer,
|
unityLicensingServer,
|
||||||
|
runAsHostUser,
|
||||||
|
unitySerial,
|
||||||
...runnerContext,
|
...runnerContext,
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import ImageEnvironmentFactory from './image-environment-factory';
|
||||||
import { existsSync, mkdirSync, readFileSync, rmSync } from 'fs';
|
import { existsSync, mkdirSync, readFileSync, rmSync } from 'fs';
|
||||||
import LicensingServerSetup from './licensing-server-setup';
|
import LicensingServerSetup from './licensing-server-setup';
|
||||||
import type { RunnerContext } from './action';
|
import type { RunnerContext } from './action';
|
||||||
|
@ -53,25 +54,15 @@ const Docker = {
|
||||||
getLinuxCommand(image, parameters): string {
|
getLinuxCommand(image, parameters): string {
|
||||||
const {
|
const {
|
||||||
actionFolder,
|
actionFolder,
|
||||||
editorVersion,
|
|
||||||
workspace,
|
workspace,
|
||||||
projectPath,
|
|
||||||
customParameters,
|
|
||||||
testMode,
|
testMode,
|
||||||
coverageOptions,
|
|
||||||
artifactsPath,
|
|
||||||
useHostNetwork,
|
useHostNetwork,
|
||||||
sshAgent,
|
sshAgent,
|
||||||
sshPublicKeysDirectoryPath,
|
sshPublicKeysDirectoryPath,
|
||||||
packageMode,
|
|
||||||
packageName,
|
|
||||||
gitPrivateToken,
|
|
||||||
githubToken,
|
githubToken,
|
||||||
runnerTemporaryPath,
|
runnerTemporaryPath,
|
||||||
chownFilesTo,
|
|
||||||
dockerCpuLimit,
|
dockerCpuLimit,
|
||||||
dockerMemoryLimit,
|
dockerMemoryLimit,
|
||||||
unityLicensingServer,
|
|
||||||
} = parameters;
|
} = parameters;
|
||||||
|
|
||||||
const githubHome = path.join(runnerTemporaryPath, '_github_home');
|
const githubHome = path.join(runnerTemporaryPath, '_github_home');
|
||||||
|
@ -84,91 +75,52 @@ const Docker = {
|
||||||
).join(';');
|
).join(';');
|
||||||
|
|
||||||
return `docker run \
|
return `docker run \
|
||||||
--workdir /github/workspace \
|
--workdir /github/workspace \
|
||||||
--cidfile "${cidfile}" \
|
--cidfile "${cidfile}" \
|
||||||
--rm \
|
--rm \
|
||||||
--env UNITY_LICENSE \
|
${ImageEnvironmentFactory.getEnvVarString(parameters)} \
|
||||||
--env UNITY_LICENSE_FILE \
|
--env GIT_CONFIG_EXTENSIONS \
|
||||||
--env UNITY_EMAIL \
|
--env TEST_PLATFORMS="${testPlatforms}" \
|
||||||
--env UNITY_PASSWORD \
|
--env GITHUB_WORKSPACE="/github/workspace" \
|
||||||
--env UNITY_SERIAL \
|
${sshAgent ? '--env SSH_AUTH_SOCK=/ssh-agent' : ''} \
|
||||||
--env UNITY_LICENSING_SERVER="${unityLicensingServer}" \
|
--volume "${githubHome}:/root:z" \
|
||||||
--env UNITY_VERSION="${editorVersion}" \
|
--volume "${githubWorkflow}:/github/workflow:z" \
|
||||||
--env PROJECT_PATH="${projectPath}" \
|
--volume "${workspace}:/github/workspace:z" \
|
||||||
--env CUSTOM_PARAMETERS="${customParameters}" \
|
--volume "${actionFolder}/test-standalone-scripts:/UnityStandaloneScripts:z" \
|
||||||
--env TEST_PLATFORMS="${testPlatforms}" \
|
--volume "${actionFolder}/platforms/ubuntu:/steps:z" \
|
||||||
--env COVERAGE_OPTIONS="${coverageOptions}" \
|
--volume "${actionFolder}/unity-config:/usr/share/unity3d/config/:z" \
|
||||||
--env COVERAGE_RESULTS_PATH="CodeCoverage" \
|
--volume "${actionFolder}/BlankProject":"/BlankProject:z" \
|
||||||
--env ARTIFACTS_PATH="${artifactsPath}" \
|
--cpus=${dockerCpuLimit} \
|
||||||
--env PACKAGE_MODE="${packageMode}" \
|
--memory=${dockerMemoryLimit} \
|
||||||
--env PACKAGE_NAME="${packageName}" \
|
${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
|
||||||
--env GITHUB_REF \
|
${
|
||||||
--env GITHUB_SHA \
|
sshAgent && !sshPublicKeysDirectoryPath
|
||||||
--env GITHUB_REPOSITORY \
|
? `--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro`
|
||||||
--env GITHUB_ACTOR \
|
: ''
|
||||||
--env GITHUB_WORKFLOW \
|
} \
|
||||||
--env GITHUB_HEAD_REF \
|
${
|
||||||
--env GITHUB_BASE_REF \
|
sshPublicKeysDirectoryPath
|
||||||
--env GITHUB_EVENT_NAME \
|
? `--volume ${sshPublicKeysDirectoryPath}:/root/.ssh:ro`
|
||||||
--env GITHUB_WORKSPACE="/github/workspace" \
|
: ''
|
||||||
--env GITHUB_ACTION \
|
} \
|
||||||
--env GITHUB_EVENT_PATH \
|
${useHostNetwork ? '--net=host' : ''} \
|
||||||
--env RUNNER_OS \
|
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
|
||||||
--env RUNNER_TOOL_CACHE \
|
${image} \
|
||||||
--env RUNNER_TEMP \
|
/bin/bash -c "/steps/entrypoint.sh`;
|
||||||
--env RUNNER_WORKSPACE \
|
|
||||||
--env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
|
|
||||||
--env CHOWN_FILES_TO="${chownFilesTo}" \
|
|
||||||
--env GIT_CONFIG_EXTENSIONS \
|
|
||||||
${sshAgent ? '--env SSH_AUTH_SOCK=/ssh-agent' : ''} \
|
|
||||||
--volume "${githubHome}:/root:z" \
|
|
||||||
--volume "${githubWorkflow}:/github/workflow:z" \
|
|
||||||
--volume "${workspace}:/github/workspace:z" \
|
|
||||||
--volume "${actionFolder}/test-standalone-scripts:/UnityStandaloneScripts:z" \
|
|
||||||
--volume "${actionFolder}/steps:/steps:z" \
|
|
||||||
--volume "${actionFolder}/entrypoint.sh:/entrypoint.sh:z" \
|
|
||||||
--volume "${actionFolder}/unity-config:/usr/share/unity3d/config/:z" \
|
|
||||||
--cpus=${dockerCpuLimit} \
|
|
||||||
--memory=${dockerMemoryLimit} \
|
|
||||||
${sshAgent ? `--volume ${sshAgent}:/ssh-agent` : ''} \
|
|
||||||
${
|
|
||||||
sshAgent && !sshPublicKeysDirectoryPath
|
|
||||||
? `--volume /home/runner/.ssh/known_hosts:/root/.ssh/known_hosts:ro`
|
|
||||||
: ''
|
|
||||||
} \
|
|
||||||
${
|
|
||||||
sshPublicKeysDirectoryPath
|
|
||||||
? `--volume ${sshPublicKeysDirectoryPath}:/root/.ssh:ro`
|
|
||||||
: ''
|
|
||||||
} \
|
|
||||||
${useHostNetwork ? '--net=host' : ''} \
|
|
||||||
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
|
|
||||||
${image} \
|
|
||||||
/bin/bash -c /entrypoint.sh`;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
getWindowsCommand(image, parameters): string {
|
getWindowsCommand(image, parameters): string {
|
||||||
const {
|
const {
|
||||||
actionFolder,
|
actionFolder,
|
||||||
editorVersion,
|
|
||||||
workspace,
|
workspace,
|
||||||
projectPath,
|
|
||||||
customParameters,
|
|
||||||
testMode,
|
testMode,
|
||||||
coverageOptions,
|
|
||||||
artifactsPath,
|
|
||||||
useHostNetwork,
|
useHostNetwork,
|
||||||
sshAgent,
|
sshAgent,
|
||||||
packageMode,
|
|
||||||
packageName,
|
|
||||||
gitPrivateToken,
|
|
||||||
githubToken,
|
githubToken,
|
||||||
runnerTemporaryPath,
|
runnerTemporaryPath,
|
||||||
chownFilesTo,
|
|
||||||
dockerCpuLimit,
|
dockerCpuLimit,
|
||||||
dockerMemoryLimit,
|
dockerMemoryLimit,
|
||||||
dockerIsolationMode,
|
dockerIsolationMode,
|
||||||
unityLicensingServer,
|
|
||||||
} = parameters;
|
} = parameters;
|
||||||
|
|
||||||
const githubHome = path.join(runnerTemporaryPath, '_github_home');
|
const githubHome = path.join(runnerTemporaryPath, '_github_home');
|
||||||
|
@ -181,48 +133,19 @@ const Docker = {
|
||||||
).join(';');
|
).join(';');
|
||||||
|
|
||||||
return `docker run \
|
return `docker run \
|
||||||
--workdir /github/workspace \
|
--workdir c:/github/workspace \
|
||||||
--cidfile "${cidfile}" \
|
--cidfile "${cidfile}" \
|
||||||
--rm \
|
--rm \
|
||||||
--env UNITY_LICENSE \
|
${ImageEnvironmentFactory.getEnvVarString(parameters)} \
|
||||||
--env UNITY_LICENSE_FILE \
|
|
||||||
--env UNITY_EMAIL \
|
|
||||||
--env UNITY_PASSWORD \
|
|
||||||
--env UNITY_SERIAL \
|
|
||||||
--env UNITY_LICENSING_SERVER="${unityLicensingServer}" \
|
|
||||||
--env UNITY_VERSION="${editorVersion}" \
|
|
||||||
--env PROJECT_PATH="${projectPath}" \
|
|
||||||
--env CUSTOM_PARAMETERS="${customParameters}" \
|
|
||||||
--env TEST_PLATFORMS="${testPlatforms}" \
|
--env TEST_PLATFORMS="${testPlatforms}" \
|
||||||
--env COVERAGE_OPTIONS="${coverageOptions}" \
|
--env GITHUB_WORKSPACE="c:/github/workspace" \
|
||||||
--env COVERAGE_RESULTS_PATH="CodeCoverage" \
|
|
||||||
--env ARTIFACTS_PATH="${artifactsPath}" \
|
|
||||||
--env PACKAGE_MODE="${packageMode}" \
|
|
||||||
--env PACKAGE_NAME="${packageName}" \
|
|
||||||
--env GITHUB_REF \
|
|
||||||
--env GITHUB_SHA \
|
|
||||||
--env GITHUB_REPOSITORY \
|
|
||||||
--env GITHUB_ACTOR \
|
|
||||||
--env GITHUB_WORKFLOW \
|
|
||||||
--env GITHUB_HEAD_REF \
|
|
||||||
--env GITHUB_BASE_REF \
|
|
||||||
--env GITHUB_EVENT_NAME \
|
|
||||||
--env GITHUB_WORKSPACE="/github/workspace" \
|
|
||||||
--env GITHUB_ACTION \
|
|
||||||
--env GITHUB_EVENT_PATH \
|
|
||||||
--env RUNNER_OS \
|
|
||||||
--env RUNNER_TOOL_CACHE \
|
|
||||||
--env RUNNER_TEMP \
|
|
||||||
--env RUNNER_WORKSPACE \
|
|
||||||
--env GIT_PRIVATE_TOKEN="${gitPrivateToken}" \
|
|
||||||
--env CHOWN_FILES_TO="${chownFilesTo}" \
|
|
||||||
${sshAgent ? '--env SSH_AUTH_SOCK=c:/ssh-agent' : ''} \
|
${sshAgent ? '--env SSH_AUTH_SOCK=c:/ssh-agent' : ''} \
|
||||||
--volume "${actionFolder}/test-standalone-scripts":"c:/UnityStandaloneScripts" \
|
--volume "${actionFolder}/test-standalone-scripts":"c:/UnityStandaloneScripts" \
|
||||||
--volume "${githubHome}":"c:/root" \
|
--volume "${githubHome}":"c:/root" \
|
||||||
--volume "${githubWorkflow}":"c:/github/workflow" \
|
--volume "${githubWorkflow}":"c:/github/workflow" \
|
||||||
--volume "${workspace}":"c:/github/workspace" \
|
--volume "${workspace}":"c:/github/workspace" \
|
||||||
--volume "${actionFolder}/steps":"c:/steps" \
|
--volume "${actionFolder}/platforms/windows":"c:/steps" \
|
||||||
--volume "${actionFolder}":"c:/dist" \
|
--volume "${actionFolder}/BlankProject":"c:/BlankProject" \
|
||||||
${sshAgent ? `--volume ${sshAgent}:c:/ssh-agent` : ''} \
|
${sshAgent ? `--volume ${sshAgent}:c:/ssh-agent` : ''} \
|
||||||
${
|
${
|
||||||
sshAgent
|
sshAgent
|
||||||
|
@ -235,7 +158,7 @@ const Docker = {
|
||||||
${useHostNetwork ? '--net=host' : ''} \
|
${useHostNetwork ? '--net=host' : ''} \
|
||||||
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
|
${githubToken ? '--env USE_EXIT_CODE=false' : '--env USE_EXIT_CODE=true'} \
|
||||||
${image} \
|
${image} \
|
||||||
powershell c:/dist/entrypoint.ps1`;
|
powershell c:/steps/entrypoint.ps1`;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
class ImageEnvironmentFactory {
|
||||||
|
public static getEnvVarString(parameters) {
|
||||||
|
const environmentVariables = ImageEnvironmentFactory.getEnvironmentVariables(parameters);
|
||||||
|
let string = '';
|
||||||
|
for (const p of environmentVariables) {
|
||||||
|
if (p.value === '' || p.value === undefined) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (p.name !== 'ANDROID_KEYSTORE_BASE64' && p.value.toString().includes(`\n`)) {
|
||||||
|
string += `--env ${p.name} `;
|
||||||
|
process.env[p.name] = p.value.toString();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
string += `--env ${p.name}="${p.value}" `;
|
||||||
|
}
|
||||||
|
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static getEnvironmentVariables(parameters) {
|
||||||
|
let environmentVariables = [
|
||||||
|
{ name: 'UNITY_EMAIL', value: process.env.UNITY_EMAIL },
|
||||||
|
{ name: 'UNITY_PASSWORD', value: process.env.UNITY_PASSWORD },
|
||||||
|
{ name: 'UNITY_SERIAL', value: parameters.unitySerial },
|
||||||
|
{
|
||||||
|
name: 'UNITY_LICENSING_SERVER',
|
||||||
|
value: parameters.unityLicensingServer,
|
||||||
|
},
|
||||||
|
{ name: 'UNITY_VERSION', value: parameters.editorVersion },
|
||||||
|
{
|
||||||
|
name: 'USYM_UPLOAD_AUTH_TOKEN',
|
||||||
|
value: process.env.USYM_UPLOAD_AUTH_TOKEN,
|
||||||
|
},
|
||||||
|
{ name: 'PROJECT_PATH', value: parameters.projectPath },
|
||||||
|
{ name: 'COVERAGE_OPTIONS', value: parameters.coverageOptions },
|
||||||
|
{ name: 'COVERAGE_RESULTS_PATH', value: 'CodeCoverage' },
|
||||||
|
{ name: 'ARTIFACTS_PATH', value: parameters.artifactsPath },
|
||||||
|
{ name: 'PACKAGE_MODE', value: parameters.packageMode },
|
||||||
|
{ name: 'PACKAGE_NAME', value: parameters.packageName },
|
||||||
|
{ name: 'GIT_PRIVATE_TOKEN', value: parameters.gitPrivateToken },
|
||||||
|
{ name: 'VERSION', value: parameters.buildVersion },
|
||||||
|
{ name: 'CUSTOM_PARAMETERS', value: parameters.customParameters },
|
||||||
|
{ name: 'RUN_AS_HOST_USER', value: parameters.runAsHostUser },
|
||||||
|
{ name: 'CHOWN_FILES_TO', value: parameters.chownFilesTo },
|
||||||
|
{ name: 'GITHUB_REF', value: process.env.GITHUB_REF },
|
||||||
|
{ name: 'GITHUB_SHA', value: process.env.GITHUB_SHA },
|
||||||
|
{ name: 'GITHUB_REPOSITORY', value: process.env.GITHUB_REPOSITORY },
|
||||||
|
{ name: 'GITHUB_ACTOR', value: process.env.GITHUB_ACTOR },
|
||||||
|
{ name: 'GITHUB_WORKFLOW', value: process.env.GITHUB_WORKFLOW },
|
||||||
|
{ name: 'GITHUB_HEAD_REF', value: process.env.GITHUB_HEAD_REF },
|
||||||
|
{ name: 'GITHUB_BASE_REF', value: process.env.GITHUB_BASE_REF },
|
||||||
|
{ name: 'GITHUB_EVENT_NAME', value: process.env.GITHUB_EVENT_NAME },
|
||||||
|
{ name: 'GITHUB_ACTION', value: process.env.GITHUB_ACTION },
|
||||||
|
{ name: 'GITHUB_EVENT_PATH', value: process.env.GITHUB_EVENT_PATH },
|
||||||
|
{ name: 'RUNNER_OS', value: process.env.RUNNER_OS },
|
||||||
|
{ name: 'RUNNER_TOOL_CACHE', value: process.env.RUNNER_TOOL_CACHE },
|
||||||
|
{ name: 'RUNNER_TEMP', value: process.env.RUNNER_TEMP },
|
||||||
|
{ name: 'RUNNER_WORKSPACE', value: process.env.RUNNER_WORKSPACE },
|
||||||
|
];
|
||||||
|
|
||||||
|
for (const variable of environmentVariables) {
|
||||||
|
if (
|
||||||
|
environmentVariables.some(
|
||||||
|
x => variable !== undefined && variable.name !== undefined && x.name === variable.name,
|
||||||
|
) === undefined
|
||||||
|
) {
|
||||||
|
environmentVariables = environmentVariables.filter(x => x !== variable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parameters.sshAgent) {
|
||||||
|
environmentVariables.push({ name: 'SSH_AUTH_SOCK', value: '/ssh-agent' });
|
||||||
|
}
|
||||||
|
|
||||||
|
return environmentVariables;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ImageEnvironmentFactory;
|
|
@ -1,17 +1,15 @@
|
||||||
import ImageTag from './image-tag';
|
import ImageTag from './image-tag';
|
||||||
|
|
||||||
jest.spyOn(ImageTag, 'getImagePlatformPrefix').mockReturnValue('ubuntu');
|
|
||||||
|
|
||||||
describe('ImageTag', () => {
|
describe('ImageTag', () => {
|
||||||
const some = {
|
const some = {
|
||||||
editorVersion: '2099.9.f9f9',
|
editorVersion: '2099.9.f9f9',
|
||||||
targetPlatform: 'Test',
|
targetPlatform: 'Test',
|
||||||
builderPlatform: '',
|
builderPlatform: '',
|
||||||
|
containerRegistryRepository: 'unityci/editor',
|
||||||
|
containerRegistryImageVersion: '3',
|
||||||
};
|
};
|
||||||
|
|
||||||
const defaults = {
|
const defaults = {
|
||||||
repository: 'unityci',
|
|
||||||
name: 'editor',
|
|
||||||
image: 'unityci/editor',
|
image: 'unityci/editor',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -24,8 +22,7 @@ describe('ImageTag', () => {
|
||||||
it('accepts parameters and sets the right properties', () => {
|
it('accepts parameters and sets the right properties', () => {
|
||||||
const image = new ImageTag(some);
|
const image = new ImageTag(some);
|
||||||
|
|
||||||
expect(image.repository).toStrictEqual('unityci');
|
expect(image.repository).toStrictEqual('unityci/editor');
|
||||||
expect(image.name).toStrictEqual('editor');
|
|
||||||
expect(image.editorVersion).toStrictEqual(some.editorVersion);
|
expect(image.editorVersion).toStrictEqual(some.editorVersion);
|
||||||
expect(image.targetPlatform).toStrictEqual(some.targetPlatform);
|
expect(image.targetPlatform).toStrictEqual(some.targetPlatform);
|
||||||
expect(image.targetPlatformSuffix).toStrictEqual(some.builderPlatform);
|
expect(image.targetPlatformSuffix).toStrictEqual(some.builderPlatform);
|
||||||
|
@ -48,30 +45,65 @@ describe('ImageTag', () => {
|
||||||
const image = new ImageTag({
|
const image = new ImageTag({
|
||||||
editorVersion: '2099.1.1111',
|
editorVersion: '2099.1.1111',
|
||||||
targetPlatform: some.targetPlatform,
|
targetPlatform: some.targetPlatform,
|
||||||
|
containerRegistryRepository: 'unityci/editor',
|
||||||
|
containerRegistryImageVersion: '3',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(image.toString()).toStrictEqual(`${defaults.image}:ubuntu-2099.1.1111-3`);
|
switch (process.platform) {
|
||||||
|
case 'win32':
|
||||||
|
expect(image.toString()).toStrictEqual(`${defaults.image}:windows-2099.1.1111-3`);
|
||||||
|
break;
|
||||||
|
case 'linux':
|
||||||
|
expect(image.toString()).toStrictEqual(`${defaults.image}:ubuntu-2099.1.1111-3`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
it('returns customImage if given', () => {
|
it('returns customImage if given', () => {
|
||||||
const image = new ImageTag({
|
const image = new ImageTag({
|
||||||
editorVersion: '2099.1.1111',
|
editorVersion: '2099.1.1111',
|
||||||
targetPlatform: some.targetPlatform,
|
targetPlatform: some.targetPlatform,
|
||||||
customImage: `${defaults.image}:2099.1.1111@347598437689743986`,
|
customImage: `${defaults.image}:2099.1.1111@347598437689743986`,
|
||||||
|
containerRegistryRepository: 'unityci/editor',
|
||||||
|
containerRegistryImageVersion: '3',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(image.toString()).toStrictEqual(image.customImage);
|
expect(image.toString()).toStrictEqual(image.customImage);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns the specific build platform', () => {
|
it('returns the specific build platform', () => {
|
||||||
const image = new ImageTag({ editorVersion: '2022.3.7f1', targetPlatform: 'WebGL' });
|
const image = new ImageTag({
|
||||||
|
editorVersion: '2022.3.7f1',
|
||||||
|
targetPlatform: 'WebGL',
|
||||||
|
containerRegistryRepository: 'unityci/editor',
|
||||||
|
containerRegistryImageVersion: '3',
|
||||||
|
});
|
||||||
|
|
||||||
expect(image.toString()).toStrictEqual(`${defaults.image}:ubuntu-2022.3.7f1-webgl-3`);
|
switch (process.platform) {
|
||||||
|
case 'win32':
|
||||||
|
expect(image.toString()).toStrictEqual(`${defaults.image}:windows-2022.3.7f1-webgl-3`);
|
||||||
|
break;
|
||||||
|
case 'linux':
|
||||||
|
expect(image.toString()).toStrictEqual(`${defaults.image}:ubuntu-2022.3.7f1-webgl-3`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
it('returns no specific build platform for generic targetPlatforms', () => {
|
it('returns no specific build platform for generic targetPlatforms', () => {
|
||||||
const image = new ImageTag({ targetPlatform: 'NoTarget' });
|
const image = new ImageTag({
|
||||||
|
editorVersion: '2019.2.11f1',
|
||||||
|
targetPlatform: 'NoTarget',
|
||||||
|
containerRegistryRepository: 'unityci/editor',
|
||||||
|
containerRegistryImageVersion: '3',
|
||||||
|
});
|
||||||
|
|
||||||
expect(image.toString()).toStrictEqual(`${defaults.image}:ubuntu-2022.3.7f1-3`);
|
switch (process.platform) {
|
||||||
|
case 'win32':
|
||||||
|
expect(image.toString()).toStrictEqual(`${defaults.image}:windows-2019.2.11f1-3`);
|
||||||
|
break;
|
||||||
|
case 'linux':
|
||||||
|
expect(image.toString()).toStrictEqual(`${defaults.image}:ubuntu-2019.2.11f1-3`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -3,7 +3,6 @@ import Platform from './platform';
|
||||||
class ImageTag {
|
class ImageTag {
|
||||||
public customImage?: string;
|
public customImage?: string;
|
||||||
public repository: string;
|
public repository: string;
|
||||||
public name: string;
|
|
||||||
public editorVersion: string;
|
public editorVersion: string;
|
||||||
public targetPlatform: string;
|
public targetPlatform: string;
|
||||||
public targetPlatformSuffix: string;
|
public targetPlatformSuffix: string;
|
||||||
|
@ -15,6 +14,8 @@ class ImageTag {
|
||||||
editorVersion = '2022.3.7f1',
|
editorVersion = '2022.3.7f1',
|
||||||
targetPlatform = ImageTag.getImagePlatformType(process.platform),
|
targetPlatform = ImageTag.getImagePlatformType(process.platform),
|
||||||
customImage,
|
customImage,
|
||||||
|
containerRegistryRepository,
|
||||||
|
containerRegistryImageVersion,
|
||||||
} = imageProperties;
|
} = imageProperties;
|
||||||
|
|
||||||
if (!ImageTag.versionPattern.test(editorVersion)) {
|
if (!ImageTag.versionPattern.test(editorVersion)) {
|
||||||
|
@ -25,13 +26,12 @@ class ImageTag {
|
||||||
this.customImage = customImage;
|
this.customImage = customImage;
|
||||||
|
|
||||||
// Or
|
// Or
|
||||||
this.repository = 'unityci';
|
this.repository = containerRegistryRepository;
|
||||||
this.name = 'editor';
|
|
||||||
this.editorVersion = editorVersion;
|
this.editorVersion = editorVersion;
|
||||||
this.targetPlatform = targetPlatform;
|
this.targetPlatform = targetPlatform;
|
||||||
this.targetPlatformSuffix = ImageTag.getTargetPlatformSuffix(targetPlatform, editorVersion);
|
this.targetPlatformSuffix = ImageTag.getTargetPlatformSuffix(targetPlatform, editorVersion);
|
||||||
this.imagePlatformPrefix = ImageTag.getImagePlatformPrefix(process.platform);
|
this.imagePlatformPrefix = ImageTag.getImagePlatformPrefix(process.platform);
|
||||||
this.imageRollingVersion = 3;
|
this.imageRollingVersion = Number(containerRegistryImageVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
static get versionPattern() {
|
static get versionPattern() {
|
||||||
|
@ -146,7 +146,7 @@ class ImageTag {
|
||||||
}
|
}
|
||||||
|
|
||||||
get image() {
|
get image() {
|
||||||
return `${this.repository}/${this.name}`.replace(/^\/+/, '');
|
return `${this.repository}`.replace(/^\/+/, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
toString() {
|
toString() {
|
||||||
|
|
|
@ -7,6 +7,19 @@ const mockedFsExistsSync = jest.spyOn(fs, 'existsSync');
|
||||||
const mockedFsReadFileSync = jest.spyOn(fs, 'readFileSync');
|
const mockedFsReadFileSync = jest.spyOn(fs, 'readFileSync');
|
||||||
|
|
||||||
describe('Input', () => {
|
describe('Input', () => {
|
||||||
|
let originalEnvironment;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
// Store original process.env
|
||||||
|
originalEnvironment = process.env;
|
||||||
|
process.env['UNITY_SERIAL'] = 'F4-1234-1234-1234';
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
// Restore original process.env
|
||||||
|
process.env = originalEnvironment;
|
||||||
|
});
|
||||||
|
|
||||||
describe('getFromUser', () => {
|
describe('getFromUser', () => {
|
||||||
it('does not throw', () => {
|
it('does not throw', () => {
|
||||||
expect(() => Input.getFromUser()).not.toThrow();
|
expect(() => Input.getFromUser()).not.toThrow();
|
||||||
|
|
|
@ -2,28 +2,29 @@ import UnityVersionParser from './unity-version-parser';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import { getInput } from '@actions/core';
|
import { getInput } from '@actions/core';
|
||||||
import os from 'os';
|
import os from 'os';
|
||||||
|
import * as core from '@actions/core';
|
||||||
|
|
||||||
const Input = {
|
class Input {
|
||||||
get testModes() {
|
static get testModes() {
|
||||||
return ['all', 'playmode', 'editmode', 'standalone'];
|
return ['all', 'playmode', 'editmode', 'standalone'];
|
||||||
},
|
}
|
||||||
|
|
||||||
isValidFolderName(folderName) {
|
static isValidFolderName(folderName) {
|
||||||
const validFolderName = new RegExp(/^(\.|\.\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
|
const validFolderName = new RegExp(/^(\.|\.\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
|
||||||
|
|
||||||
return validFolderName.test(folderName);
|
return validFolderName.test(folderName);
|
||||||
},
|
}
|
||||||
|
|
||||||
isValidGlobalFolderName(folderName) {
|
static isValidGlobalFolderName(folderName) {
|
||||||
const validFolderName = new RegExp(/^(\.|\.\/|\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
|
const validFolderName = new RegExp(/^(\.|\.\/|\/)?(\.?[\w~]+([ _-]?[\w~]+)*\/?)*$/);
|
||||||
|
|
||||||
return validFolderName.test(folderName);
|
return validFolderName.test(folderName);
|
||||||
},
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When in package mode, we need to scrape the package's name from its package.json file
|
* When in package mode, we need to scrape the package's name from its package.json file
|
||||||
*/
|
*/
|
||||||
getPackageNameFromPackageJson(packagePath) {
|
static getPackageNameFromPackageJson(packagePath) {
|
||||||
const packageJsonPath = `${packagePath}/package.json`;
|
const packageJsonPath = `${packagePath}/package.json`;
|
||||||
if (!fs.existsSync(packageJsonPath)) {
|
if (!fs.existsSync(packageJsonPath)) {
|
||||||
throw new Error(`Invalid projectPath - Cannot find package.json at ${packageJsonPath}`);
|
throw new Error(`Invalid projectPath - Cannot find package.json at ${packageJsonPath}`);
|
||||||
|
@ -54,25 +55,40 @@ const Input = {
|
||||||
}
|
}
|
||||||
|
|
||||||
return rawPackageName;
|
return rawPackageName;
|
||||||
},
|
}
|
||||||
|
|
||||||
|
private static getSerialFromLicenseFile(license: string) {
|
||||||
|
const startKey = `<DeveloperData Value="`;
|
||||||
|
const endKey = `"/>`;
|
||||||
|
const startIndex = license.indexOf(startKey) + startKey.length;
|
||||||
|
if (startIndex < 0) {
|
||||||
|
throw new Error(`License File was corrupted, unable to locate serial`);
|
||||||
|
}
|
||||||
|
const endIndex = license.indexOf(endKey, startIndex);
|
||||||
|
|
||||||
|
// Slice off the first 4 characters as they are garbage values
|
||||||
|
return Buffer.from(license.slice(startIndex, endIndex), 'base64').toString('binary').slice(4);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When in package mode, we need to ensure that the Tests folder is present
|
* When in package mode, we need to ensure that the Tests folder is present
|
||||||
*/
|
*/
|
||||||
verifyTestsFolderIsPresent(packagePath) {
|
static verifyTestsFolderIsPresent(packagePath) {
|
||||||
if (!fs.existsSync(`${packagePath}/Tests`)) {
|
if (!fs.existsSync(`${packagePath}/Tests`)) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Invalid projectPath - Cannot find package tests folder at ${packagePath}/Tests`,
|
`Invalid projectPath - Cannot find package tests folder at ${packagePath}/Tests`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
getFromUser() {
|
public static getFromUser() {
|
||||||
// Input variables specified in workflow using "with" prop.
|
// Input variables specified in workflow using "with" prop.
|
||||||
const unityVersion = getInput('unityVersion') || 'auto';
|
const unityVersion = getInput('unityVersion') || 'auto';
|
||||||
const customImage = getInput('customImage') || '';
|
const customImage = getInput('customImage') || '';
|
||||||
const rawProjectPath = getInput('projectPath') || '.';
|
const rawProjectPath = getInput('projectPath') || '.';
|
||||||
const unityLicensingServer = getInput('unityLicensingServer') || '';
|
const unityLicensingServer = getInput('unityLicensingServer') || '';
|
||||||
|
const unityLicense = getInput('unityLicense') || (process.env['UNITY_LICENSE'] ?? '');
|
||||||
|
let unitySerial = process.env['UNITY_SERIAL'] ?? '';
|
||||||
const customParameters = getInput('customParameters') || '';
|
const customParameters = getInput('customParameters') || '';
|
||||||
const testMode = (getInput('testMode') || 'all').toLowerCase();
|
const testMode = (getInput('testMode') || 'all').toLowerCase();
|
||||||
const coverageOptions = getInput('coverageOptions') || '';
|
const coverageOptions = getInput('coverageOptions') || '';
|
||||||
|
@ -105,6 +121,10 @@ const Input = {
|
||||||
`${Math.floor((os.totalmem() / bytesInMegabyte) * memoryMultiplier)}m`;
|
`${Math.floor((os.totalmem() / bytesInMegabyte) * memoryMultiplier)}m`;
|
||||||
const dockerIsolationMode = getInput('dockerIsolationMode') || 'default';
|
const dockerIsolationMode = getInput('dockerIsolationMode') || 'default';
|
||||||
|
|
||||||
|
const runAsHostUser = getInput('runAsHostUser') || 'false';
|
||||||
|
const containerRegistryRepository = getInput('containerRegistryRepository') || 'unityci/editor';
|
||||||
|
const containerRegistryImageVersion = getInput('containerRegistryImageVersion') || '3';
|
||||||
|
|
||||||
// Validate input
|
// Validate input
|
||||||
if (!this.testModes.includes(testMode)) {
|
if (!this.testModes.includes(testMode)) {
|
||||||
throw new Error(`Invalid testMode ${testMode}`);
|
throw new Error(`Invalid testMode ${testMode}`);
|
||||||
|
@ -153,6 +173,28 @@ const Input = {
|
||||||
this.verifyTestsFolderIsPresent(projectPath);
|
this.verifyTestsFolderIsPresent(projectPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (runAsHostUser !== 'true' && runAsHostUser !== 'false') {
|
||||||
|
throw new Error(`Invalid runAsHostUser "${runAsHostUser}"`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (unityLicensingServer === '' && !unitySerial) {
|
||||||
|
// No serial was present, so it is a personal license that we need to convert
|
||||||
|
if (!unityLicense) {
|
||||||
|
throw new Error(
|
||||||
|
`Missing Unity License File and no Serial was found. If this
|
||||||
|
is a personal license, make sure to follow the activation
|
||||||
|
steps and set the UNITY_LICENSE GitHub secret or enter a Unity
|
||||||
|
serial number inside the UNITY_SERIAL GitHub secret.`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
unitySerial = this.getSerialFromLicenseFile(unityLicense);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (unitySerial !== undefined && unitySerial.length === 27) {
|
||||||
|
core.setSecret(unitySerial);
|
||||||
|
core.setSecret(`${unitySerial.slice(0, -4)}XXXX`);
|
||||||
|
}
|
||||||
|
|
||||||
// Sanitise other input
|
// Sanitise other input
|
||||||
const artifactsPath = rawArtifactsPath.replace(/\/$/, '');
|
const artifactsPath = rawArtifactsPath.replace(/\/$/, '');
|
||||||
const sshPublicKeysDirectoryPath = rawSshPublicKeysDirectoryPath.replace(/\/$/, '');
|
const sshPublicKeysDirectoryPath = rawSshPublicKeysDirectoryPath.replace(/\/$/, '');
|
||||||
|
@ -182,8 +224,12 @@ const Input = {
|
||||||
dockerMemoryLimit,
|
dockerMemoryLimit,
|
||||||
dockerIsolationMode,
|
dockerIsolationMode,
|
||||||
unityLicensingServer,
|
unityLicensingServer,
|
||||||
|
runAsHostUser,
|
||||||
|
containerRegistryRepository,
|
||||||
|
containerRegistryImageVersion,
|
||||||
|
unitySerial,
|
||||||
};
|
};
|
||||||
},
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
export default Input;
|
export default Input;
|
||||||
|
|
Loading…
Reference in New Issue