non-vr lobby, version fix

This commit is contained in:
joonasp
2022-06-29 14:45:17 +03:00
parent 5774be9822
commit 04baadfad1
1774 changed files with 573069 additions and 1533 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0ab5c0cab248b1c449cb35dd2672ffdb
timeCreated: 1535011200
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 88e1e0fbf44c73e46bfbba5bdd0c4cf5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 2b6a49e3ffdbf734ea066f1df3d24d3e
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,132 @@
fileFormatVersion: 2
guid: 6c4246dd80904b747bd0f2b32a4b5bef
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: f26b92046ce5e8b4b854253c5399905f
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,22 @@
fileFormatVersion: 2
guid: 1c04c1800b18bb24c9d2d40a543bf5d9
AudioImporter:
externalObjects: {}
serializedVersion: 6
defaultSettings:
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 1
preloadAudioData: 1
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 055458b32c82031478126740cfeff8b5
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: fd047d74149ed7345bfff8cee2d2b16b
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,132 @@
fileFormatVersion: 2
guid: 89c869f76d8c0474a8da08e71510f0f2
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5441652eeeb034c4a942430ea5bdc22e
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,132 @@
fileFormatVersion: 2
guid: 464883c791528804496b8c8ef7126e52
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 480dfd3723547c4449911f2f6e68c892
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,132 @@
fileFormatVersion: 2
guid: 78b736601df34e145b113200f637e37f
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 570632ee587d1ac439a2c2dc03e7b625
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,132 @@
fileFormatVersion: 2
guid: 58086affa71851c4b81d7fba4c08e0b6
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: -1
wrapV: -1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Windows Store Apps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: a3bddedbf97f48b49874eed12de3a907
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 84f760dd3ba57bb478089f89da81160d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c3d3f87b92075324cb460d8aea990056
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,830 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1107111830421828}
m_IsPrefabParent: 1
--- !u!1 &1107111830421828
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224071350919014634}
m_Layer: 5
m_Name: MenuHeader
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1139951423141390
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224227189929529224}
- component: {fileID: 222344931762645878}
- component: {fileID: 114919063098189450}
m_Layer: 5
m_Name: Fill
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1312094375265670
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224816900147619396}
m_Layer: 5
m_Name: Fill Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1318945307031904
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224814641392286240}
m_Layer: 5
m_Name: Handle Slide Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1413198682722408
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224546690503720970}
- component: {fileID: 222075473477709852}
- component: {fileID: 114160230414102640}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1517028828154570
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224377334100768974}
- component: {fileID: 222275207357212224}
- component: {fileID: 114542381380074706}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1628068555195924
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224893986903018272}
- component: {fileID: 222923875980758866}
- component: {fileID: 114603745729915400}
- component: {fileID: 114352974773395710}
m_Layer: 5
m_Name: Demo Header
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1808095574223976
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224385032750109242}
- component: {fileID: 82211189988458792}
- component: {fileID: 114302237455434094}
m_Layer: 5
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1833180120269200
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224983412324041764}
- component: {fileID: 222638005538127372}
- component: {fileID: 114724971171122394}
- component: {fileID: 114408660708379824}
- component: {fileID: 114135397663693500}
m_Layer: 5
m_Name: Button
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1834623192137638
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224945133068169140}
- component: {fileID: 222081351676312480}
- component: {fileID: 114402449524227890}
m_Layer: 5
m_Name: Handle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1901206927847060
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224553972546966500}
- component: {fileID: 114464138758346680}
m_Layer: 5
m_Name: Slider
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!82 &82211189988458792
AudioSource:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1808095574223976}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 8300000, guid: 2b6a49e3ffdbf734ea066f1df3d24d3e, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 1
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
- serializedVersion: 2
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 0
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 2
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 0
--- !u!114 &114135397663693500
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1833180120269200}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0aeb3b11a4ed83e4cb11098a0cfb9c71, type: 3}
m_Name:
m_EditorClassIdentifier:
sidebarButton: {fileID: 114408660708379824}
panelsHolder: {fileID: 0}
--- !u!114 &114160230414102640
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1413198682722408}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!114 &114302237455434094
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1808095574223976}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: aec32561f997fa94cb5db680ffee8c5e, type: 3}
m_Name:
m_EditorClassIdentifier:
volumeText: {fileID: 114542381380074706}
volumeSlider: {fileID: 114464138758346680}
audioSource: {fileID: 82211189988458792}
initialVolume: 0
--- !u!114 &114352974773395710
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1628068555195924}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredHeight: 32
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &114402449524227890
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1834623192137638}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!114 &114408660708379824
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1833180120269200}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 114724971171122394}
m_OnClick:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null
--- !u!114 &114464138758346680
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1901206927847060}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -113659843, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 114402449524227890}
m_FillRect: {fileID: 224227189929529224}
m_HandleRect: {fileID: 224945133068169140}
m_Direction: 0
m_MinValue: 0
m_MaxValue: 1
m_WholeNumbers: 0
m_Value: 0
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null
--- !u!114 &114542381380074706
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1517028828154570}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 10
m_MaxSize: 15
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: 'BG Volume: 0.125'
--- !u!114 &114603745729915400
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1628068555195924}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 12800000, guid: 1c24caf2cf8ad3f4d97b3ed7b7749c28, type: 3}
m_FontSize: 24
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 2
m_MaxSize: 50
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Photon Voice 2 Demo
--- !u!114 &114724971171122394
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1833180120269200}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 21300000, guid: 055458b32c82031478126740cfeff8b5, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!114 &114919063098189450
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1139951423141390}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!222 &222075473477709852
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1413198682722408}
--- !u!222 &222081351676312480
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1834623192137638}
--- !u!222 &222275207357212224
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1517028828154570}
--- !u!222 &222344931762645878
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1139951423141390}
--- !u!222 &222638005538127372
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1833180120269200}
--- !u!222 &222923875980758866
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1628068555195924}
--- !u!224 &224071350919014634
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1107111830421828}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224983412324041764}
- {fileID: 224893986903018272}
- {fileID: 224385032750109242}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 400, y: 0}
m_SizeDelta: {x: 800, y: 32}
m_Pivot: {x: 0.5, y: 1}
--- !u!224 &224227189929529224
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1139951423141390}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224816900147619396}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 10, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!224 &224377334100768974
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1517028828154570}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224385032750109242}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: -200, y: 0}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 1, y: 0.5}
--- !u!224 &224385032750109242
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1808095574223976}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224553972546966500}
- {fileID: 224377334100768974}
m_Father: {fileID: 224071350919014634}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 200, y: 100}
m_Pivot: {x: 1, y: 0.5}
--- !u!224 &224546690503720970
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1413198682722408}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224553972546966500}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!224 &224553972546966500
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1901206927847060}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224546690503720970}
- {fileID: 224816900147619396}
- {fileID: 224814641392286240}
m_Father: {fileID: 224385032750109242}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!224 &224814641392286240
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1318945307031904}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224945133068169140}
m_Father: {fileID: 224553972546966500}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!224 &224816900147619396
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1312094375265670}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224227189929529224}
m_Father: {fileID: 224553972546966500}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.25}
m_AnchorMax: {x: 1, y: 0.75}
m_AnchoredPosition: {x: -5, y: 0}
m_SizeDelta: {x: -20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!224 &224893986903018272
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1628068555195924}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224071350919014634}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 50, y: 0}
m_SizeDelta: {x: 290, y: 32}
m_Pivot: {x: 0, y: 1}
--- !u!224 &224945133068169140
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1834623192137638}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224814641392286240}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!224 &224983412324041764
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1833180120269200}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224071350919014634}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 16, y: -16}
m_SizeDelta: {x: 32, y: 32}
m_Pivot: {x: 0.5, y: 0.5}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f38c259b43d815c4bbf8ab644dad2bfc
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 68d1999e77809664ab4e058635090f3c
timeCreated: 1535018373
licenseType: Store
NativeFormatImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,449 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1161699429745888}
m_IsPrefabParent: 1
--- !u!1 &1001953700486054
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224158050893942018}
- component: {fileID: 222478993685407188}
- component: {fileID: 114270724816556340}
- component: {fileID: 114286843222546754}
m_Layer: 5
m_Name: Input Level Warning
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1161699429745888
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224489872745892352}
- component: {fileID: 114139542632285958}
m_Layer: 5
m_Name: Stats Bar
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1191231590210334
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224267040942519150}
- component: {fileID: 222580725540642600}
- component: {fileID: 114976105909052158}
- component: {fileID: 114420254180983594}
m_Layer: 5
m_Name: PacketLoss
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1475438673684016
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224614481541782352}
- component: {fileID: 222141929655037062}
- component: {fileID: 114466107203999976}
- component: {fileID: 114867729465388470}
m_Layer: 5
m_Name: RTT
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1666940076194746
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 224311553418378070}
- component: {fileID: 222397411457813658}
- component: {fileID: 114947142590498966}
- component: {fileID: 114407788636789292}
m_Layer: 5
m_Name: Variation
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &114139542632285958
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1161699429745888}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 0
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 1
m_ChildControlHeight: 0
--- !u!114 &114270724816556340
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1001953700486054}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 12800000, guid: 1c24caf2cf8ad3f4d97b3ed7b7749c28, type: 3}
m_FontSize: 18
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 1
m_MaxSize: 28
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text:
--- !u!114 &114286843222546754
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1001953700486054}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: 30
m_PreferredWidth: -1
m_PreferredHeight: 30
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &114407788636789292
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1666940076194746}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: 30
m_PreferredWidth: -1
m_PreferredHeight: 30
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &114420254180983594
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1191231590210334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: 30
m_PreferredWidth: -1
m_PreferredHeight: 30
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &114466107203999976
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1475438673684016}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 12800000, guid: 1c24caf2cf8ad3f4d97b3ed7b7749c28, type: 3}
m_FontSize: 18
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 1
m_MaxSize: 28
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: RTT
--- !u!114 &114867729465388470
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1475438673684016}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: 30
m_PreferredWidth: -1
m_PreferredHeight: 30
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &114947142590498966
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1666940076194746}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 12800000, guid: 1c24caf2cf8ad3f4d97b3ed7b7749c28, type: 3}
m_FontSize: 18
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 1
m_MaxSize: 28
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: VAR
--- !u!114 &114976105909052158
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1191231590210334}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 12800000, guid: 1c24caf2cf8ad3f4d97b3ed7b7749c28, type: 3}
m_FontSize: 18
m_FontStyle: 0
m_BestFit: 1
m_MinSize: 1
m_MaxSize: 28
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: PacketLoss
--- !u!222 &222141929655037062
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1475438673684016}
--- !u!222 &222397411457813658
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1666940076194746}
--- !u!222 &222478993685407188
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1001953700486054}
--- !u!222 &222580725540642600
CanvasRenderer:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1191231590210334}
--- !u!224 &224158050893942018
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1001953700486054}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 224489872745892352}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 30}
m_Pivot: {x: 0, y: 1}
--- !u!224 &224267040942519150
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1191231590210334}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 0.99999994}
m_Children: []
m_Father: {fileID: 224489872745892352}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 30}
m_Pivot: {x: 0, y: 1}
--- !u!224 &224311553418378070
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1666940076194746}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 0.99999994}
m_Children: []
m_Father: {fileID: 224489872745892352}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 30}
m_Pivot: {x: 0, y: 1}
--- !u!224 &224489872745892352
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1161699429745888}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 224614481541782352}
- {fileID: 224311553418378070}
- {fileID: 224267040942519150}
- {fileID: 224158050893942018}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 30}
m_Pivot: {x: 0.5, y: 0}
--- !u!224 &224614481541782352
RectTransform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1475438673684016}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 0.99999994}
m_Children: []
m_Father: {fileID: 224489872745892352}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 30}
m_Pivot: {x: 0, y: 1}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c4e00f6ba71484545bef17d11b0f1185
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: b6e693e24c0dfa44094841a96168d92f
folderAsset: yes
timeCreated: 1535015784
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,203 @@
Font data copyright Google 2012
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d885444fcbcff8441a020461620e620b
timeCreated: 1535015787
licenseType: Store
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,25 @@
fileFormatVersion: 2
guid: aace1d6711bf8104d87562bd81d1819d
timeCreated: 1535015788
licenseType: Store
TrueTypeFontImporter:
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontName: Roboto Condensed
fontNames:
- Roboto Condensed
fallbackFontReferences:
- {fileID: 12800000, guid: 3839124237278cc4e8479a9eb2d31060, type: 3}
- {fileID: 12800000, guid: 2cbbfa82012ba5d4ab2dcedcf845dd0d, type: 3}
- {fileID: 12800000, guid: 1c24caf2cf8ad3f4d97b3ed7b7749c28, type: 3}
- {fileID: 12800000, guid: 258b59f93225802478005dba1e695e1f, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,23 @@
fileFormatVersion: 2
guid: defa0bab941d7f044acf393273e7c3de
timeCreated: 1535015952
licenseType: Store
TrueTypeFontImporter:
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontName: Roboto Condensed
fontNames:
- Roboto Condensed
fallbackFontReferences:
- {fileID: 12800000, guid: 1c24caf2cf8ad3f4d97b3ed7b7749c28, type: 3}
- {fileID: 12800000, guid: aace1d6711bf8104d87562bd81d1819d, type: 3}
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 1c24caf2cf8ad3f4d97b3ed7b7749c28
timeCreated: 1535015787
licenseType: Store
TrueTypeFontImporter:
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontName: Roboto Condensed
fontNames:
- Roboto Condensed
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9bbd4fae690fad143aad89abda88ea11
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,34 @@
namespace Photon.Voice.Unity.Demos
{
using UnityEngine;
using UnityEngine.UI;
public class BackgroundMusicController : MonoBehaviour
{
#pragma warning disable 649
[SerializeField]
private Text volumeText;
[SerializeField]
private Slider volumeSlider;
[SerializeField]
private AudioSource audioSource;
[SerializeField]
private float initialVolume = 0.125f;
#pragma warning restore 649
private void Awake()
{
this.volumeSlider.minValue = 0f;
this.volumeSlider.maxValue = 1f;
this.volumeSlider.SetSingleOnValueChangedCallback(this.OnVolumeChanged);
this.volumeSlider.value = this.initialVolume;
this.OnVolumeChanged(this.initialVolume);
}
private void OnVolumeChanged(float newValue)
{
this.volumeText.text = string.Format("BG Volume: {0:0.###}", newValue);
this.audioSource.volume = newValue;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: aec32561f997fa94cb5db680ffee8c5e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,194 @@
namespace Photon.Voice.Unity.Demos.DemoVoiceUI
{
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using POpusCodec.Enums;
public class CodecSettingsUI : MonoBehaviour
{
#pragma warning disable 649
[SerializeField]
private Dropdown frameDurationDropdown;
[SerializeField]
private Dropdown samplingRateDropdown;
[SerializeField]
private InputField bitrateInputField;
[SerializeField]
private Recorder recorder;
#pragma warning restore 649
private static readonly List<string> frameDurationOptions = new List<string>
{
"2.5ms", // EnumValueToString(OpusCodec.FrameDuration.Frame2dot5ms),
"5ms", // EnumValueToString(OpusCodec.FrameDuration.Frame5ms),
"10ms", // EnumValueToString(OpusCodec.FrameDuration.Frame10ms),
"20ms", // EnumValueToString( OpusCodec.FrameDuration.Frame20ms),
"40ms", // EnumValueToString(OpusCodec.FrameDuration.Frame40ms),
"60ms" // EnumValueToString(OpusCodec.FrameDuration.Frame60ms)
};
private static readonly List<string> samplingRateOptions = new List<string>
{
"8kHz", // EnumValueToString(SamplingRate.Sampling08000),
"12kHz", // EnumValueToString(SamplingRate.Sampling12000),
"16kHz", // EnumValueToString(SamplingRate.Sampling16000),
"24kHz", // EnumValueToString(SamplingRate.Sampling24000),
"48kHz", // EnumValueToString(SamplingRate.Sampling48000)
};
private void Awake()
{
this.frameDurationDropdown.ClearOptions();
this.frameDurationDropdown.AddOptions(frameDurationOptions);
this.InitFrameDuration();
this.frameDurationDropdown.SetSingleOnValueChangedCallback(this.OnFrameDurationChanged);
this.samplingRateDropdown.ClearOptions();
this.samplingRateDropdown.AddOptions(samplingRateOptions);
this.InitSamplingRate();
this.samplingRateDropdown.SetSingleOnValueChangedCallback(this.OnSamplingRateChanged);
this.bitrateInputField.SetSingleOnValueChangedCallback(this.OnBitrateChanged);
this.InitBitrate();
}
#region UNITY_EDITOR
private void Update()
{
this.InitFrameDuration();
this.InitSamplingRate();
this.InitBitrate();
}
#endregion
private void OnBitrateChanged(string newBitrateString)
{
int newBirate;
if (int.TryParse(newBitrateString, out newBirate))
{
this.recorder.Bitrate = newBirate;
if (this.recorder.RequiresRestart)
{
this.recorder.RestartRecording();
}
}
}
private void OnFrameDurationChanged(int index)
{
OpusCodec.FrameDuration newFrameDuration = this.recorder.FrameDuration;
switch (index)
{
case 0:
newFrameDuration = OpusCodec.FrameDuration.Frame2dot5ms;
break;
case 1:
newFrameDuration = OpusCodec.FrameDuration.Frame5ms;
break;
case 2:
newFrameDuration = OpusCodec.FrameDuration.Frame10ms;
break;
case 3:
newFrameDuration = OpusCodec.FrameDuration.Frame20ms;
break;
case 4:
newFrameDuration = OpusCodec.FrameDuration.Frame40ms;
break;
case 5:
newFrameDuration = OpusCodec.FrameDuration.Frame60ms;
break;
}
this.recorder.FrameDuration = newFrameDuration;
if (this.recorder.RequiresRestart)
{
this.recorder.RestartRecording();
}
}
private void OnSamplingRateChanged(int index)
{
SamplingRate newSamplingRate = this.recorder.SamplingRate;
switch (index)
{
case 0:
newSamplingRate = SamplingRate.Sampling08000;
break;
case 1:
newSamplingRate = SamplingRate.Sampling12000;
break;
case 2:
newSamplingRate = SamplingRate.Sampling16000;
break;
case 3:
newSamplingRate = SamplingRate.Sampling24000;
break;
case 4:
newSamplingRate = SamplingRate.Sampling48000;
break;
}
this.recorder.SamplingRate = newSamplingRate;
if (this.recorder.RequiresRestart)
{
this.recorder.RestartRecording();
}
}
private void InitFrameDuration()
{
int index = 0;
switch (this.recorder.FrameDuration)
{
case OpusCodec.FrameDuration.Frame5ms:
index = 1;
break;
case OpusCodec.FrameDuration.Frame10ms:
index = 2;
break;
case OpusCodec.FrameDuration.Frame20ms:
index = 3;
break;
case OpusCodec.FrameDuration.Frame40ms:
index = 4;
break;
case OpusCodec.FrameDuration.Frame60ms:
index = 5;
break;
}
this.frameDurationDropdown.value = index;
}
private void InitSamplingRate()
{
int index = 0;
switch (this.recorder.SamplingRate)
{
case SamplingRate.Sampling12000:
index = 1;
break;
case SamplingRate.Sampling16000:
index = 2;
break;
case SamplingRate.Sampling24000:
index = 3;
break;
case SamplingRate.Sampling48000:
index = 4;
break;
}
this.samplingRateDropdown.value = index;
}
private void InitBitrate()
{
this.bitrateInputField.text = this.recorder.Bitrate.ToString();
}
//private static string EnumValueToString(object enumValue)
//{
// return Enum.GetName(enumValue.GetType(), enumValue);
//}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 28f4b5ea592c07a46923a0bda48b14b1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,667 @@
#if UNITY_EDITOR_WIN || UNITY_EDITOR_OSX || !UNITY_EDITOR && (UNITY_IOS || UNITY_ANDROID || UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX)
#define WEBRTC_AUDIO_DSP_SUPPORTED
#endif
namespace Photon.Voice.Unity.Demos.DemoVoiceUI
{
using System.Collections.Generic;
using Realtime;
using ExitGames.Client.Photon;
using UtilityScripts;
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(VoiceConnection), typeof(ConnectAndJoin))]
public class DemoVoiceUI : MonoBehaviour, IInRoomCallbacks, IMatchmakingCallbacks
{
#pragma warning disable 649
[SerializeField]
private Text connectionStatusText;
[SerializeField]
private Text serverStatusText;
[SerializeField]
private Text roomStatusText;
[SerializeField]
private Text inputWarningText;
[SerializeField]
private Text rttText;
[SerializeField]
private Text rttVariationText;
[SerializeField]
private Text packetLossWarningText;
[SerializeField]
private InputField localNicknameText;
[SerializeField]
private Toggle debugEchoToggle;
[SerializeField]
private Toggle reliableTransmissionToggle;
[SerializeField]
private Toggle encryptionToggle;
[SerializeField]
private GameObject webRtcDspGameObject;
[SerializeField]
private Toggle aecToggle;
[SerializeField]
private Toggle aecHighPassToggle;
[SerializeField]
private InputField reverseStreamDelayInputField;
[SerializeField]
private Toggle noiseSuppressionToggle;
[SerializeField]
private Toggle agcToggle;
[SerializeField]
private Slider agcCompressionGainSlider;
[SerializeField]
private Toggle vadToggle;
[SerializeField]
private Toggle muteToggle;
[SerializeField]
private Toggle streamAudioClipToggle;
[SerializeField]
private Toggle audioToneToggle;
[SerializeField]
private Toggle dspToggle;
[SerializeField]
private Toggle highPassToggle;
[SerializeField]
private Toggle photonVadToggle;
[SerializeField]
private GameObject microphoneSetupGameObject;
[SerializeField]
private bool defaultTransmitEnabled = false;
[SerializeField]
private int screenWidth = 800;
[SerializeField]
private int screenHeight = 600;
[SerializeField]
private bool fullScreen;
[SerializeField]
private InputField roomNameInputField;
[SerializeField]
private InputField globalMinDelaySoftInputField;
[SerializeField]
private InputField globalMaxDelaySoftInputField;
[SerializeField]
private InputField globalMaxDelayHardInputField;
[SerializeField]
private int rttYellowThreshold = 100;
[SerializeField]
private int rttRedThreshold = 160;
[SerializeField]
private int rttVariationYellowThreshold = 25;
[SerializeField]
private int rttVariationRedThreshold = 50;
#pragma warning restore 649
private GameObject compressionGainGameObject;
private Text compressionGainText;
private GameObject aecOptionsGameObject;
public Transform RemoteVoicesPanel;
protected VoiceConnection voiceConnection;
private WebRtcAudioDsp voiceAudioPreprocessor;
private ConnectAndJoin connectAndJoin;
private readonly Color warningColor = new Color(0.9f,0.5f,0f,1f);
private readonly Color okColor = new Color(0.0f,0.6f,0.2f,1f);
private readonly Color redColor = new Color(1.0f,0.0f,0.0f,1f);
private readonly Color defaultColor = new Color(0.0f,0.0f,0.0f,1f);
private void Awake()
{
Screen.SetResolution(this.screenWidth, this.screenHeight, this.fullScreen);
this.connectAndJoin = this.GetComponent<ConnectAndJoin>();
this.voiceConnection = this.GetComponent<VoiceConnection>();
this.voiceAudioPreprocessor = this.voiceConnection.PrimaryRecorder.GetComponent<WebRtcAudioDsp>();
this.compressionGainGameObject = this.agcCompressionGainSlider.transform.parent.gameObject;
this.compressionGainText = this.compressionGainGameObject.GetComponentInChildren<Text>();
this.aecOptionsGameObject = this.aecHighPassToggle.transform.parent.gameObject;
this.SetDefaults();
this.InitUiCallbacks();
this.InitUiValues();
this.GetSavedNickname();
}
protected virtual void SetDefaults()
{
this.muteToggle.isOn = !this.defaultTransmitEnabled;
}
private void OnEnable()
{
this.voiceConnection.SpeakerLinked += this.OnSpeakerCreated;
this.voiceConnection.Client.AddCallbackTarget(this);
}
private void OnDisable()
{
this.voiceConnection.SpeakerLinked -= this.OnSpeakerCreated;
this.voiceConnection.Client.RemoveCallbackTarget(this);
}
private void GetSavedNickname()
{
string savedNick = PlayerPrefs.GetString("vNick");
if (!string.IsNullOrEmpty(savedNick))
{
//Debug.LogFormat("Saved nick = {0}", savedNick);
this.localNicknameText.text = savedNick;
this.voiceConnection.Client.NickName = savedNick;
}
}
protected virtual void OnSpeakerCreated(Speaker speaker)
{
speaker.gameObject.transform.SetParent(this.RemoteVoicesPanel, false);
RemoteSpeakerUI remoteSpeakerUi = speaker.GetComponent<RemoteSpeakerUI>();
remoteSpeakerUi.Init(this.voiceConnection);
speaker.OnRemoteVoiceRemoveAction += this.OnRemoteVoiceRemove;
}
private void OnRemoteVoiceRemove(Speaker speaker)
{
if (speaker != null)
{
Destroy(speaker.gameObject);
}
}
private void ToggleMute(bool isOn) // transmit is used as opposite of mute...
{
this.muteToggle.targetGraphic.enabled = !isOn;
if (isOn)
{
this.voiceConnection.Client.LocalPlayer.Mute();
}
else
{
this.voiceConnection.Client.LocalPlayer.Unmute();
}
}
protected virtual void ToggleIsRecording(bool isRecording)
{
this.voiceConnection.PrimaryRecorder.IsRecording = isRecording;
}
private void ToggleDebugEcho(bool isOn)
{
this.voiceConnection.PrimaryRecorder.DebugEchoMode = isOn;
}
private void ToggleReliable(bool isOn)
{
this.voiceConnection.PrimaryRecorder.ReliableMode = isOn;
}
private void ToggleEncryption(bool isOn)
{
this.voiceConnection.PrimaryRecorder.Encrypt = isOn;
}
private void ToggleAEC(bool isOn)
{
this.voiceAudioPreprocessor.AEC = isOn;
this.aecOptionsGameObject.SetActive(isOn);
}
private void ToggleNoiseSuppression(bool isOn)
{
this.voiceAudioPreprocessor.NoiseSuppression = isOn;
}
private void ToggleAGC(bool isOn)
{
this.voiceAudioPreprocessor.AGC = isOn;
this.compressionGainGameObject.SetActive(isOn);
}
private void ToggleVAD(bool isOn)
{
this.voiceAudioPreprocessor.VAD = isOn;
}
private void ToggleHighPass(bool isOn)
{
this.voiceAudioPreprocessor.HighPass = isOn;
}
private void ToggleDsp(bool isOn)
{
this.voiceAudioPreprocessor.Bypass = !isOn;
this.voiceAudioPreprocessor.enabled = isOn;
this.webRtcDspGameObject.SetActive(isOn);
}
private void ToggleAudioClipStreaming(bool isOn)
{
this.microphoneSetupGameObject.SetActive(!isOn && !this.audioToneToggle.isOn);
if (isOn)
{
this.audioToneToggle.SetValue(false);
this.voiceConnection.PrimaryRecorder.SourceType = Recorder.InputSourceType.AudioClip;
}
else if (!this.audioToneToggle.isOn)
{
this.voiceConnection.PrimaryRecorder.SourceType = Recorder.InputSourceType.Microphone;
}
if (this.voiceConnection.PrimaryRecorder.RequiresRestart)
{
this.voiceConnection.PrimaryRecorder.RestartRecording();
}
}
private void ToggleAudioToneFactory(bool isOn)
{
this.microphoneSetupGameObject.SetActive(!isOn && !this.streamAudioClipToggle.isOn);
if (isOn)
{
this.streamAudioClipToggle.SetValue(false);
this.dspToggle.isOn = false;
this.voiceConnection.PrimaryRecorder.InputFactory = () => new AudioUtil.ToneAudioReader<float>();
this.voiceConnection.PrimaryRecorder.SourceType = Recorder.InputSourceType.Factory;
}
else if (!this.streamAudioClipToggle.isOn)
{
this.voiceConnection.PrimaryRecorder.SourceType = Recorder.InputSourceType.Microphone;
}
if (this.voiceConnection.PrimaryRecorder.RequiresRestart)
{
this.voiceConnection.PrimaryRecorder.RestartRecording();
}
}
private void TogglePhotonVAD(bool isOn)
{
this.voiceConnection.PrimaryRecorder.VoiceDetection = isOn;
}
private void ToggleAecHighPass(bool isOn)
{
this.voiceAudioPreprocessor.AecHighPass = isOn;
}
private void OnAgcCompressionGainChanged(float agcCompressionGain)
{
this.voiceAudioPreprocessor.AgcCompressionGain = (int)agcCompressionGain;
this.compressionGainText.text = string.Concat("Compression Gain: ", agcCompressionGain);
}
private void OnGlobalPlaybackDelayMinSoftChanged(string newMinDelaySoftString)
{
int newMinDelaySoftValue;
int newMaxDelaySoftValue = this.voiceConnection.GlobalPlaybackDelayMaxSoft;
int newMaxDelayHardValue = this.voiceConnection.GlobalPlaybackDelayMaxHard;
if (int.TryParse(newMinDelaySoftString, out newMinDelaySoftValue) && newMinDelaySoftValue >= 0 && newMinDelaySoftValue < newMaxDelaySoftValue)
{
this.voiceConnection.SetGlobalPlaybackDelaySettings(newMinDelaySoftValue, newMaxDelaySoftValue, newMaxDelayHardValue);
}
else
{
this.globalMinDelaySoftInputField.text = this.voiceConnection.GlobalPlaybackDelayMinSoft.ToString();
}
}
private void OnGlobalPlaybackDelayMaxSoftChanged(string newMaxDelaySoftString)
{
int newMinDelaySoftValue = this.voiceConnection.GlobalPlaybackDelayMinSoft;
int newMaxDelaySoftValue;
int newMaxDelayHardValue = this.voiceConnection.GlobalPlaybackDelayMaxHard;
if (int.TryParse(newMaxDelaySoftString, out newMaxDelaySoftValue) && newMaxDelaySoftValue > newMinDelaySoftValue)
{
this.voiceConnection.SetGlobalPlaybackDelaySettings(newMinDelaySoftValue, newMaxDelaySoftValue, newMaxDelayHardValue);
}
else
{
this.globalMaxDelaySoftInputField.text = this.voiceConnection.GlobalPlaybackDelayMaxSoft.ToString();
}
}
private void OnGlobalPlaybackDelayMaxHardChanged(string newMaxDelayHardString)
{
int newMinDelaySoftValue = this.voiceConnection.GlobalPlaybackDelayMinSoft;
int newMaxDelaySoftValue = this.voiceConnection.GlobalPlaybackDelayMaxSoft;
int newMaxDelayHardValue;
if (int.TryParse(newMaxDelayHardString, out newMaxDelayHardValue) && newMaxDelayHardValue >= newMaxDelaySoftValue)
{
this.voiceConnection.SetGlobalPlaybackDelaySettings(newMinDelaySoftValue, newMaxDelaySoftValue, newMaxDelayHardValue);
}
else
{
this.globalMaxDelayHardInputField.text = this.voiceConnection.GlobalPlaybackDelayMaxHard.ToString();
}
}
private void OnReverseStreamDelayChanged(string newReverseStreamString)
{
int newReverseStreamValue;
if (int.TryParse(newReverseStreamString, out newReverseStreamValue) && newReverseStreamValue > 0)
{
this.voiceAudioPreprocessor.ReverseStreamDelayMs = newReverseStreamValue;
}
else
{
this.reverseStreamDelayInputField.text = this.voiceAudioPreprocessor.ReverseStreamDelayMs.ToString();
}
}
private void UpdateSyncedNickname(string nickname)
{
nickname = nickname.Trim();
if (string.IsNullOrEmpty(nickname))
{
return;
}
//Debug.LogFormat("UpdateSyncedNickname() name: {0}", nickname);
this.voiceConnection.Client.LocalPlayer.NickName = nickname;
PlayerPrefs.SetString("vNick", nickname);
}
private void JoinOrCreateRoom(string roomName)
{
if (string.IsNullOrEmpty(roomName))
{
this.connectAndJoin.RoomName = string.Empty;
this.connectAndJoin.RandomRoom = true;
}
else
{
this.connectAndJoin.RoomName = roomName.Trim();
this.connectAndJoin.RandomRoom = false;
}
if (this.voiceConnection.Client.InRoom)
{
this.voiceConnection.Client.OpLeaveRoom(false);
}
else if (!this.voiceConnection.Client.IsConnected)
{
this.voiceConnection.ConnectUsingSettings();
}
}
protected virtual void Update()
{
#if UNITY_EDITOR
this.InitUiValues(); // refresh UI in case changed from Unity Editor
#endif
this.connectionStatusText.text = this.voiceConnection.Client.State.ToString();
this.serverStatusText.text = string.Format("{0}/{1}", this.voiceConnection.Client.CloudRegion, this.voiceConnection.Client.CurrentServerAddress);
if (this.voiceConnection.PrimaryRecorder.IsCurrentlyTransmitting)
{
var amplitude = this.voiceConnection.PrimaryRecorder.LevelMeter.CurrentAvgAmp;
if (amplitude > 1)
{
amplitude /= (short.MaxValue + 1);
}
if (amplitude > 0.1)
{
this.inputWarningText.text = "Input too loud!";
this.inputWarningText.color = this.warningColor;
}
else
{
this.inputWarningText.text = string.Empty;
this.ResetTextColor(this.inputWarningText);
}
}
if (this.voiceConnection.FramesReceivedPerSecond > 0)
{
this.packetLossWarningText.text = string.Format("{0:0.##}% Packet Loss", this.voiceConnection.FramesLostPercent);
this.packetLossWarningText.color = this.voiceConnection.FramesLostPercent > 1 ? this.warningColor : this.okColor;
}
else
{
this.packetLossWarningText.text = string.Empty;
this.ResetTextColor(this.packetLossWarningText);
}
this.rttText.text = string.Concat("RTT:", this.voiceConnection.Client.LoadBalancingPeer.RoundTripTime);
this.SetTextColor(this.voiceConnection.Client.LoadBalancingPeer.RoundTripTime, this.rttText, this.rttYellowThreshold, this.rttRedThreshold);
this.rttVariationText.text = string.Concat("VAR:", this.voiceConnection.Client.LoadBalancingPeer.RoundTripTimeVariance);
this.SetTextColor(this.voiceConnection.Client.LoadBalancingPeer.RoundTripTimeVariance, this.rttVariationText, this.rttVariationYellowThreshold, this.rttVariationRedThreshold);
}
private void SetTextColor(int textValue, Text text, int yellowThreshold, int redThreshold)
{
if (textValue > redThreshold)
{
text.color = this.redColor;
}
else if (textValue > yellowThreshold)
{
text.color = this.warningColor;
}
else
{
text.color = this.okColor;
}
}
private void ResetTextColor(Text text)
{
text.color = this.defaultColor;
}
private void InitUiCallbacks()
{
this.muteToggle.SetSingleOnValueChangedCallback(this.ToggleMute);
this.debugEchoToggle.SetSingleOnValueChangedCallback(this.ToggleDebugEcho);
this.vadToggle.SetSingleOnValueChangedCallback(this.ToggleVAD);
this.aecToggle.SetSingleOnValueChangedCallback(this.ToggleAEC);
this.agcToggle.SetSingleOnValueChangedCallback(this.ToggleAGC);
this.debugEchoToggle.SetSingleOnValueChangedCallback(this.ToggleDebugEcho);
this.dspToggle.SetSingleOnValueChangedCallback(this.ToggleDsp);
this.highPassToggle.SetSingleOnValueChangedCallback(this.ToggleHighPass);
this.encryptionToggle.SetSingleOnValueChangedCallback(this.ToggleEncryption);
this.reliableTransmissionToggle.SetSingleOnValueChangedCallback(this.ToggleReliable);
this.streamAudioClipToggle.SetSingleOnValueChangedCallback(this.ToggleAudioClipStreaming);
this.photonVadToggle.SetSingleOnValueChangedCallback(this.TogglePhotonVAD);
this.aecHighPassToggle.SetSingleOnValueChangedCallback(this.ToggleAecHighPass);
this.noiseSuppressionToggle.SetSingleOnValueChangedCallback(this.ToggleNoiseSuppression);
this.audioToneToggle.SetSingleOnValueChangedCallback(this.ToggleAudioToneFactory);
this.agcCompressionGainSlider.SetSingleOnValueChangedCallback(this.OnAgcCompressionGainChanged);
this.localNicknameText.SetSingleOnEndEditCallback(this.UpdateSyncedNickname);
this.roomNameInputField.SetSingleOnEndEditCallback(this.JoinOrCreateRoom);
#if UNITY_EDITOR
this.globalMinDelaySoftInputField.SetSingleOnValueChangedCallback(this.OnGlobalPlaybackDelayMinSoftChanged);
this.globalMaxDelaySoftInputField.SetSingleOnValueChangedCallback(this.OnGlobalPlaybackDelayMaxSoftChanged);
this.globalMaxDelayHardInputField.SetSingleOnValueChangedCallback(this.OnGlobalPlaybackDelayMaxHardChanged);
this.reverseStreamDelayInputField.SetSingleOnValueChangedCallback(this.OnReverseStreamDelayChanged);
#else
this.globalMinDelaySoftInputField.SetSingleOnEndEditCallback(this.OnGlobalPlaybackDelayMinSoftChanged);
this.globalMaxDelaySoftInputField.SetSingleOnEndEditCallback(this.OnGlobalPlaybackDelayMaxSoftChanged);
this.globalMaxDelayHardInputField.SetSingleOnEndEditCallback(this.OnGlobalPlaybackDelayMaxHardChanged);
this.reverseStreamDelayInputField.SetSingleOnEndEditCallback(this.OnReverseStreamDelayChanged);
#endif
}
private void InitUiValues()
{
this.muteToggle.SetValue(this.voiceConnection.Client.LocalPlayer.IsMuted());
this.debugEchoToggle.SetValue(this.voiceConnection.PrimaryRecorder.DebugEchoMode);
this.reliableTransmissionToggle.SetValue(this.voiceConnection.PrimaryRecorder.ReliableMode);
this.encryptionToggle.SetValue(this.voiceConnection.PrimaryRecorder.Encrypt);
this.streamAudioClipToggle.SetValue(this.voiceConnection.PrimaryRecorder.SourceType ==
Recorder.InputSourceType.AudioClip);
this.audioToneToggle.SetValue(this.voiceConnection.PrimaryRecorder.SourceType == Recorder.InputSourceType.Factory);
this.microphoneSetupGameObject.SetActive(!this.streamAudioClipToggle.isOn && !this.audioToneToggle.isOn);
this.globalMinDelaySoftInputField.SetValue(this.voiceConnection.GlobalPlaybackDelayMinSoft.ToString());
this.globalMaxDelaySoftInputField.SetValue(this.voiceConnection.GlobalPlaybackDelayMaxSoft.ToString());
this.globalMaxDelayHardInputField.SetValue(this.voiceConnection.GlobalPlaybackDelayMaxHard.ToString());
if (this.webRtcDspGameObject != null)
{
#if WEBRTC_AUDIO_DSP_SUPPORTED
if (this.voiceAudioPreprocessor == null)
{
this.webRtcDspGameObject.SetActive(false);
this.dspToggle.gameObject.SetActive(false);
}
else
{
this.dspToggle.gameObject.SetActive(true);
this.dspToggle.SetValue(!this.voiceAudioPreprocessor.Bypass && this.voiceAudioPreprocessor.enabled);
this.webRtcDspGameObject.SetActive(this.dspToggle.isOn);
this.aecToggle.SetValue(this.voiceAudioPreprocessor.AEC);
this.aecHighPassToggle.SetValue(this.voiceAudioPreprocessor.AecHighPass);
this.reverseStreamDelayInputField.text = this.voiceAudioPreprocessor.ReverseStreamDelayMs.ToString();
this.aecOptionsGameObject.SetActive(this.voiceAudioPreprocessor.AEC);
this.noiseSuppressionToggle.isOn = this.voiceAudioPreprocessor.NoiseSuppression;
this.agcToggle.SetValue(this.voiceAudioPreprocessor.AGC);
this.agcCompressionGainSlider.SetValue(this.voiceAudioPreprocessor.AgcCompressionGain);
this.compressionGainGameObject.SetActive(this.voiceAudioPreprocessor.AGC);
this.vadToggle.SetValue(this.voiceAudioPreprocessor.VAD);
this.highPassToggle.SetValue(this.voiceAudioPreprocessor.HighPass);
}
#else
this.webRtcDspGameObject.SetActive(false);
this.dspToggle.gameObject.SetActive(false);
#endif
}
else
{
this.dspToggle.gameObject.SetActive(false);
}
}
private void SetRoomDebugText()
{
string playerDebugString = string.Empty;
if (this.voiceConnection.Client.InRoom)
{
foreach (Player p in this.voiceConnection.Client.CurrentRoom.Players.Values)
{
playerDebugString = string.Concat(playerDebugString, p.ToStringFull());
}
this.roomStatusText.text = string.Format("{0} {1}", this.voiceConnection.Client.CurrentRoom.Name, playerDebugString);
}
else
{
this.roomStatusText.text = string.Empty;
}
this.roomStatusText.text = this.voiceConnection.Client.CurrentRoom == null ? string.Empty : string.Format("{0} {1}", this.voiceConnection.Client.CurrentRoom.Name, playerDebugString);
}
protected virtual void OnActorPropertiesChanged(Player targetPlayer, Hashtable changedProps)
{
if (targetPlayer.IsLocal)
{
bool isMuted = targetPlayer.IsMuted();
this.voiceConnection.PrimaryRecorder.TransmitEnabled = !isMuted;
this.muteToggle.SetValue(isMuted);
}
this.SetRoomDebugText();
}
#region IInRoomCallbacks
void IInRoomCallbacks.OnPlayerEnteredRoom(Player newPlayer)
{
this.SetRoomDebugText();
}
void IInRoomCallbacks.OnPlayerLeftRoom(Player otherPlayer)
{
this.SetRoomDebugText();
}
void IInRoomCallbacks.OnRoomPropertiesUpdate(Hashtable propertiesThatChanged)
{
}
void IInRoomCallbacks.OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps)
{
this.OnActorPropertiesChanged(targetPlayer, changedProps);
}
void IInRoomCallbacks.OnMasterClientSwitched(Player newMasterClient)
{
}
#endregion
#region IMatchmakingCallbacks
void IMatchmakingCallbacks.OnFriendListUpdate(List<FriendInfo> friendList)
{
}
void IMatchmakingCallbacks.OnCreatedRoom()
{
}
void IMatchmakingCallbacks.OnCreateRoomFailed(short returnCode, string message)
{
}
void IMatchmakingCallbacks.OnJoinedRoom()
{
this.SetRoomDebugText();
}
void IMatchmakingCallbacks.OnJoinRoomFailed(short returnCode, string message)
{
}
void IMatchmakingCallbacks.OnJoinRandomFailed(short returnCode, string message)
{
}
void IMatchmakingCallbacks.OnLeftRoom()
{
if (!ConnectionHandler.AppQuits)
{
this.SetRoomDebugText();
this.SetDefaults();
}
}
#endregion
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 094187b68c0de4668b10768c5945018a
timeCreated: 1530628279
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,279 @@
#if WINDOWS_UWP || ENABLE_WINMD_SUPPORT
#define PHOTON_MICROPHONE_WSA
#endif
#if PHOTON_MICROPHONE_WSA || UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN || UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
#define PHOTON_MICROPHONE_ENUMERATOR
#endif
#if UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_ANDROID || UNITY_IOS || UNITY_WSA || UNITY_EDITOR_OSX || UNITY_EDITOR_WIN
#define PHOTON_MICROPHONE_SUPPORTED
#endif
namespace Photon.Voice.Unity.Demos.DemoVoiceUI
{
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
public struct MicRef
{
public Recorder.MicType MicType;
public string Name;
public int PhotonId;
public string PhotonIdString;
public MicRef(string name, int id)
{
this.MicType = Recorder.MicType.Photon;
this.Name = name;
this.PhotonId = id;
this.PhotonIdString = string.Empty;
}
public MicRef(string name, string id)
{
this.MicType = Recorder.MicType.Photon;
this.Name = name;
this.PhotonId = -1;
this.PhotonIdString = id;
}
public MicRef(string name)
{
this.MicType = Recorder.MicType.Unity;
this.Name = name;
this.PhotonId = -1;
this.PhotonIdString = string.Empty;
}
public override string ToString()
{
return string.Format("Mic reference: {0}", this.Name);
}
}
public class MicrophoneDropdownFiller : MonoBehaviour
{
private List<MicRef> micOptions;
#pragma warning disable 649
[SerializeField]
private Dropdown micDropdown;
[SerializeField]
private Recorder recorder;
[SerializeField]
[FormerlySerializedAs("RefreshButton")]
private GameObject refreshButton;
[SerializeField]
[FormerlySerializedAs("ToggleButton")]
private GameObject toggleButton;
#pragma warning restore 649
private Toggle photonToggle;
private void Awake()
{
this.photonToggle = this.toggleButton.GetComponentInChildren<Toggle>();
this.RefreshMicrophones();
}
private void OnEnable()
{
UtilityScripts.MicrophonePermission.MicrophonePermissionCallback += this.OnMicrophonePermissionCallback;
}
private void OnMicrophonePermissionCallback(bool granted)
{
this.RefreshMicrophones();
}
private void OnDisable()
{
UtilityScripts.MicrophonePermission.MicrophonePermissionCallback -= this.OnMicrophonePermissionCallback;
}
private void SetupMicDropdown()
{
this.micDropdown.ClearOptions();
this.micOptions = new List<MicRef>();
List<string> micOptionsStrings = new List<string>();
for(int i=0; i < Microphone.devices.Length; i++)
{
string x = Microphone.devices[i];
this.micOptions.Add(new MicRef(x));
micOptionsStrings.Add(string.Format("[Unity] {0}", x));
}
#if PHOTON_MICROPHONE_ENUMERATOR
if (this.recorder.MicrophonesEnumerator.IsSupported)
{
int i = 0;
foreach (DeviceInfo deviceInfo in this.recorder.MicrophonesEnumerator)
{
string n = deviceInfo.Name;
#if PHOTON_MICROPHONE_WSA
this.micOptions.Add(new MicRef(n, deviceInfo.IDString));
#else
this.micOptions.Add(new MicRef(n, deviceInfo.IDInt));
#endif
micOptionsStrings.Add(string.Format("[Photon] {0}", n));
i++;
}
}
#endif
this.micDropdown.AddOptions(micOptionsStrings);
this.micDropdown.onValueChanged.RemoveAllListeners();
this.micDropdown.onValueChanged.AddListener(delegate { this.MicDropdownValueChanged(this.micOptions[this.micDropdown.value]); });
}
private void MicDropdownValueChanged(MicRef mic)
{
this.recorder.MicrophoneType = mic.MicType;
switch (mic.MicType)
{
case Recorder.MicType.Unity:
this.recorder.UnityMicrophoneDevice = mic.Name;
break;
case Recorder.MicType.Photon:
#if PHOTON_MICROPHONE_WSA
this.recorder.PhotonMicrophoneDeviceIdString = mic.PhotonIdString;
#else
this.recorder.PhotonMicrophoneDeviceId = mic.PhotonId;
#endif
break;
}
if (this.recorder.RequiresRestart)
{
this.recorder.RestartRecording();
}
}
private void SetCurrentValue()
{
if (this.micOptions == null)
{
Debug.LogWarning("micOptions list is null");
return;
}
#if PHOTON_MICROPHONE_ENUMERATOR
bool photonMicEnumAvailable = this.recorder.MicrophonesEnumerator.IsSupported;
#else
bool photonMicEnumAvailable = false;
#endif
this.photonToggle.onValueChanged.RemoveAllListeners();
this.photonToggle.isOn = this.recorder.MicrophoneType == Recorder.MicType.Photon;
if (!photonMicEnumAvailable)
{
this.photonToggle.onValueChanged.AddListener(this.PhotonMicToggled);
}
this.micDropdown.gameObject.SetActive(photonMicEnumAvailable || this.recorder.MicrophoneType == Recorder.MicType.Unity);
#if PHOTON_MICROPHONE_SUPPORTED
this.toggleButton.SetActive(!photonMicEnumAvailable);
#else
this.toggleButton.SetActive(false);
#endif
this.refreshButton.SetActive(photonMicEnumAvailable || this.recorder.MicrophoneType == Recorder.MicType.Unity);
for (int valueIndex = 0; valueIndex < this.micOptions.Count; valueIndex++)
{
MicRef val = this.micOptions[valueIndex];
if (this.recorder.MicrophoneType == val.MicType)
{
if (this.recorder.MicrophoneType == Recorder.MicType.Unity &&
Recorder.CompareUnityMicNames(val.Name, this.recorder.UnityMicrophoneDevice))
{
this.micDropdown.value = valueIndex;
return;
}
#if PHOTON_MICROPHONE_WSA
if (this.recorder.MicrophoneType == Recorder.MicType.Photon &&
string.Equals(val.PhotonIdString, this.recorder.PhotonMicrophoneDeviceIdString))
{
this.micDropdown.value = valueIndex;
return;
}
#else
if (this.recorder.MicrophoneType == Recorder.MicType.Photon &&
val.PhotonId == this.recorder.PhotonMicrophoneDeviceId)
{
this.micDropdown.value = valueIndex;
return;
}
#endif
}
}
for (int valueIndex = 0; valueIndex < this.micOptions.Count; valueIndex++)
{
MicRef val = this.micOptions[valueIndex];
if (this.recorder.MicrophoneType == val.MicType)
{
if (this.recorder.MicrophoneType == Recorder.MicType.Unity)
{
this.micDropdown.value = valueIndex;
this.recorder.UnityMicrophoneDevice = val.Name;
break;
}
if (this.recorder.MicrophoneType == Recorder.MicType.Photon)
{
this.micDropdown.value = valueIndex;
#if PHOTON_MICROPHONE_WSA
this.recorder.PhotonMicrophoneDeviceIdString = val.PhotonIdString;
#else
this.recorder.PhotonMicrophoneDeviceId = val.PhotonId;
#endif
break;
}
}
}
if (this.recorder.RequiresRestart)
{
this.recorder.RestartRecording();
}
}
public void PhotonMicToggled(bool on)
{
this.micDropdown.gameObject.SetActive(!on);
this.refreshButton.SetActive(!on);
if (on)
{
this.recorder.MicrophoneType = Recorder.MicType.Photon;
}
else
{
this.recorder.MicrophoneType = Recorder.MicType.Unity;
}
if (this.recorder.RequiresRestart)
{
this.recorder.RestartRecording();
}
}
public void RefreshMicrophones()
{
#if PHOTON_MICROPHONE_ENUMERATOR
//Debug.Log("Refresh Mics");
this.recorder.MicrophonesEnumerator.Refresh();
#endif
this.SetupMicDropdown();
this.SetCurrentValue();
}
// sync. UI in case a change happens from the Unity Editor Inspector
private void PhotonVoiceCreated()
{
this.RefreshMicrophones();
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 46c5b6e5ca0ea874f9e8d58fd90ef139
timeCreated: 1530628279
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
namespace Photon.Voice.Unity.Demos.DemoVoiceUI
{
using Realtime;
using ExitGames.Client.Photon;
public static partial class PhotonDemoExtensions // todo: USE C.A.S. ALWAYS
{
// this demo uses a Custom Property (as explained in the Realtime API), to sync if a player muted her microphone. that value needs a string key.
internal const string IS_MUTED_PROPERTY_KEY = "mute";
public static bool Mute(this Player player)
{
return player.SetCustomProperties(new Hashtable(1) { { IS_MUTED_PROPERTY_KEY, true } });
}
public static bool Unmute(this Player player)
{
return player.SetCustomProperties(new Hashtable(1) { { IS_MUTED_PROPERTY_KEY, false } });
}
public static bool IsMuted(this Player player)
{
object temp;
return player.CustomProperties.TryGetValue(IS_MUTED_PROPERTY_KEY, out temp) && (bool)temp;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2f0b31909ac64a343906fc8be6490c2f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,171 @@
namespace Photon.Voice.Unity.Demos.DemoVoiceUI
{
using ExitGames.Client.Photon;
using Unity;
using UnityEngine;
using UnityEngine.UI;
using Realtime;
[RequireComponent(typeof(Speaker))]
public class RemoteSpeakerUI : MonoBehaviour, IInRoomCallbacks
{
#pragma warning disable 649
[SerializeField]
private Text nameText;
[SerializeField]
protected Image remoteIsMuting;
[SerializeField]
private Image remoteIsTalking;
[SerializeField]
private InputField minDelaySoftInputField;
[SerializeField]
private InputField maxDelaySoftInputField;
[SerializeField]
private InputField maxDelayHardInputField;
[SerializeField]
private Text bufferLagText;
#pragma warning restore 649
protected Speaker speaker;
protected VoiceConnection voiceConnection;
protected LoadBalancingClient loadBalancingClient;
protected virtual void Start()
{
this.speaker = this.GetComponent<Speaker>();
this.minDelaySoftInputField.text = this.speaker.PlaybackDelayMinSoft.ToString();
this.minDelaySoftInputField.SetSingleOnEndEditCallback(this.OnMinDelaySoftChanged);
this.maxDelaySoftInputField.text = this.speaker.PlaybackDelayMaxSoft.ToString();
this.maxDelaySoftInputField.SetSingleOnEndEditCallback(this.OnMaxDelaySoftChanged);
this.maxDelayHardInputField.text = this.speaker.PlaybackDelayMaxHard.ToString();
this.maxDelayHardInputField.SetSingleOnEndEditCallback(this.OnMaxDelayHardChanged);
this.SetNickname();
this.SetMutedState();
}
private void OnMinDelaySoftChanged(string newMinDelaySoftString)
{
int newMinDelaySoftValue;
int newMaxDelaySoftValue = this.speaker.PlaybackDelayMaxSoft;
int newMaxDelayHardValue = this.speaker.PlaybackDelayMaxHard;
if (int.TryParse(newMinDelaySoftString, out newMinDelaySoftValue) && newMinDelaySoftValue >= 0 && newMinDelaySoftValue < newMaxDelaySoftValue)
{
this.speaker.SetPlaybackDelaySettings(newMinDelaySoftValue, newMaxDelaySoftValue, newMaxDelayHardValue);
}
else
{
this.minDelaySoftInputField.text = this.speaker.PlaybackDelayMinSoft.ToString();
}
}
private void OnMaxDelaySoftChanged(string newMaxDelaySoftString)
{
int newMinDelaySoftValue = this.speaker.PlaybackDelayMinSoft;
int newMaxDelaySoftValue;
int newMaxDelayHardValue = this.speaker.PlaybackDelayMaxHard;
if (int.TryParse(newMaxDelaySoftString, out newMaxDelaySoftValue) && newMinDelaySoftValue < newMaxDelaySoftValue)
{
this.speaker.SetPlaybackDelaySettings(newMinDelaySoftValue, newMaxDelaySoftValue, newMaxDelayHardValue);
}
else
{
this.maxDelaySoftInputField.text = this.speaker.PlaybackDelayMaxSoft.ToString();
}
}
private void OnMaxDelayHardChanged(string newMaxDelayHardString)
{
int newMinDelaySoftValue = this.speaker.PlaybackDelayMinSoft;
int newMaxDelaySoftValue = this.speaker.PlaybackDelayMaxSoft;
int newMaxDelayHardValue;
if (int.TryParse(newMaxDelayHardString, out newMaxDelayHardValue) && newMaxDelayHardValue >= newMaxDelaySoftValue)
{
this.speaker.SetPlaybackDelaySettings(newMinDelaySoftValue, newMaxDelaySoftValue, newMaxDelayHardValue);
}
else
{
this.maxDelayHardInputField.text = this.speaker.PlaybackDelayMaxHard.ToString();
}
}
private void Update()
{
// TODO: It would be nice, if we could show if a user is actually talking right now (Voice Detection)
this.remoteIsTalking.enabled = this.speaker.IsPlaying;
this.bufferLagText.text = string.Concat("Buffer Lag: ", this.speaker.Lag);
}
private void OnDestroy()
{
if (this.loadBalancingClient != null)
{
this.loadBalancingClient.RemoveCallbackTarget(this);
}
}
private void SetNickname()
{
string nick = this.speaker.name;
if (this.speaker.Actor != null)
{
nick = this.speaker.Actor.NickName;
if (string.IsNullOrEmpty(nick))
{
nick = string.Concat("user ", this.speaker.Actor.ActorNumber);
}
}
this.nameText.text = nick;
}
private void SetMutedState()
{
this.SetMutedState(this.speaker.Actor.IsMuted());
}
protected virtual void SetMutedState(bool isMuted)
{
this.remoteIsMuting.enabled = isMuted;
}
protected virtual void OnActorPropertiesChanged(Player targetPlayer, Hashtable changedProps)
{
if (targetPlayer.ActorNumber == this.speaker.Actor.ActorNumber)
{
this.SetMutedState();
this.SetNickname();
}
}
public virtual void Init(VoiceConnection vC)
{
this.voiceConnection = vC;
this.loadBalancingClient = this.voiceConnection.Client;
this.loadBalancingClient.AddCallbackTarget(this);
}
#region IInRoomCallbacks
void IInRoomCallbacks.OnPlayerEnteredRoom(Player newPlayer)
{
}
void IInRoomCallbacks.OnPlayerLeftRoom(Player otherPlayer)
{
}
void IInRoomCallbacks.OnRoomPropertiesUpdate(Hashtable propertiesThatChanged)
{
}
void IInRoomCallbacks.OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps)
{
this.OnActorPropertiesChanged(targetPlayer, changedProps);
}
void IInRoomCallbacks.OnMasterClientSwitched(Player newMasterClient)
{
}
#endregion
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 25daf05c976bc754b9a4ad8ae371c854
timeCreated: 1530628279
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,48 @@
namespace Photon.Voice.Unity.Demos
{
using UnityEngine.UI;
using UnityEngine;
public class SidebarToggle : MonoBehaviour
{
#pragma warning disable 649
[SerializeField]
private Button sidebarButton;
[SerializeField]
private RectTransform panelsHolder;
#pragma warning restore 649
private float sidebarWidth = 300f; // todo: get width dynamically at runtime
private bool sidebarOpen = true;
private void Awake()
{
this.sidebarButton.onClick.RemoveAllListeners();
this.sidebarButton.onClick.AddListener(this.ToggleSidebar);
this.ToggleSidebar(this.sidebarOpen);
}
[ContextMenu("ToggleSidebar")]
private void ToggleSidebar()
{
this.sidebarOpen = !this.sidebarOpen;
this.ToggleSidebar(this.sidebarOpen);
}
private void ToggleSidebar(bool open)
{
if (!open)
{
//this.panelsHolder.SetLeft(0);
this.panelsHolder.SetPosX(0);
}
else
{
//this.panelsHolder.SetLeft(this.sidebarWidth);
this.panelsHolder.SetPosX(this.sidebarWidth);
}
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0aeb3b11a4ed83e4cb11098a0cfb9c71
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,157 @@
namespace Photon.Voice.Unity.Demos
{
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using Object = UnityEngine.Object;
public static class UiExtensions
{
//http://answers.unity.com/answers/1610964/view.html
//https://gist.github.com/Josef212/b3f4bcf9cd827f5dc125ffc013548491
public static void SetPosX(this RectTransform rectTransform, float x)
{
rectTransform.anchoredPosition3D = new Vector3(x, rectTransform.anchoredPosition3D.y, rectTransform.anchoredPosition3D.z);
}
public static void SetHeight(this RectTransform rectTransform, float h)
{
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, h);
}
//https://forum.unity.com/threads/change-the-value-of-a-toggle-without-triggering-onvaluechanged.275056/#post-2750271
#if !UNITY_2019_1_OR_NEWER
private static Toggle.ToggleEvent emptyToggleEvent = new Toggle.ToggleEvent();
#endif
// added to 2019.1 https://docs.unity3d.com/2019.1/Documentation/ScriptReference/UI.Toggle.SetIsOnWithoutNotify.html
public static void SetValue(this Toggle toggle, bool isOn)
{
#if UNITY_2019_1_OR_NEWER
toggle.SetIsOnWithoutNotify(isOn);
#else
Toggle.ToggleEvent originalEvent = toggle.onValueChanged;
toggle.onValueChanged = emptyToggleEvent;
toggle.isOn = isOn;
toggle.onValueChanged = originalEvent;
#endif
}
#if !UNITY_2019_1_OR_NEWER
private static Slider.SliderEvent emptySliderEvent = new Slider.SliderEvent();
#endif
public static void SetValue(this Slider slider, float v)
{
#if UNITY_2019_1_OR_NEWER
slider.SetValueWithoutNotify(v);
#else
Slider.SliderEvent originalEvent = slider.onValueChanged;
slider.onValueChanged = emptySliderEvent;
slider.value = v;
slider.onValueChanged = originalEvent;
#endif
}
#if !UNITY_2019_1_OR_NEWER
private static InputField.OnChangeEvent emptyInputFieldEvent = new InputField.OnChangeEvent();
private static InputField.SubmitEvent emptyInputFieldSubmitEvent = new InputField.SubmitEvent();
#endif
public static void SetValue(this InputField inputField, string v)
{
#if UNITY_2019_1_OR_NEWER
inputField.SetTextWithoutNotify(v);
#else
InputField.OnChangeEvent origianlEvent = inputField.onValueChanged;
InputField.SubmitEvent originalSubmitEvent = inputField.onEndEdit;
inputField.onValueChanged = emptyInputFieldEvent;
inputField.onEndEdit = emptyInputFieldSubmitEvent;
inputField.text = v;
inputField.onValueChanged = origianlEvent;
inputField.onEndEdit = originalSubmitEvent;
#endif
}
// https://forum.unity.com/threads/deleting-all-chidlren-of-an-object.92827/#post-2058407
/// <summary>
/// Calls GameObject.Destroy on all children of transform. and immediately detaches the children
/// from transform so after this call transform.childCount is zero.
/// </summary>
public static void DestroyChildren(this Transform transform)
{
if (!ReferenceEquals(null, transform) && transform)
{
for (int i = transform.childCount - 1; i >= 0; --i)
{
Transform child = transform.GetChild(i);
if (child && child.gameObject)
{
Object.Destroy(child.gameObject);
}
}
transform.DetachChildren();
}
}
public static void Hide(this CanvasGroup canvasGroup, bool blockRaycasts = false, bool interactable = false)
{
canvasGroup.alpha = 0f;
canvasGroup.blocksRaycasts = blockRaycasts;
canvasGroup.interactable = interactable;
}
public static void Show(this CanvasGroup canvasGroup, bool blockRaycasts = true, bool interactable = true)
{
canvasGroup.alpha = 1f;
canvasGroup.blocksRaycasts = blockRaycasts;
canvasGroup.interactable = interactable;
}
public static bool IsHidden(this CanvasGroup canvasGroup)
{
return canvasGroup.alpha <= 0f;
}
public static bool IsShown(this CanvasGroup canvasGroup)
{
return canvasGroup.alpha > 0f;
}
public static void SetSingleOnClickCallback(this Button button, UnityAction action)
{
button.onClick.RemoveAllListeners();
button.onClick.AddListener(action);
}
public static void SetSingleOnValueChangedCallback(this Toggle toggle, UnityAction<bool> action)
{
toggle.onValueChanged.RemoveAllListeners();
toggle.onValueChanged.AddListener(action);
}
public static void SetSingleOnValueChangedCallback(this InputField inputField, UnityAction<string> action)
{
inputField.onValueChanged.RemoveAllListeners();
inputField.onValueChanged.AddListener(action);
}
public static void SetSingleOnEndEditCallback(this InputField inputField, UnityAction<string> action)
{
inputField.onEndEdit.RemoveAllListeners();
inputField.onEndEdit.AddListener(action);
}
public static void SetSingleOnValueChangedCallback(this Dropdown inputField, UnityAction<int> action)
{
inputField.onValueChanged.RemoveAllListeners();
inputField.onValueChanged.AddListener(action);
}
public static void SetSingleOnValueChangedCallback(this Slider slider, UnityAction<float> action)
{
slider.onValueChanged.RemoveAllListeners();
slider.onValueChanged.AddListener(action);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 61bfa3948d4c1d34bb79ea542ab7217f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: